Question

Il a été un moment que je l'ai foiré avec .htaccess et je ne peux pas sembler obtenir ce tout à fait raison. J'ai un site, par exemple example.com, où je veux example.com/* rediriger vers example.com/collector.html sauf pour les URL sous le sous-répertoire example.com/special, que je veux de continuer à travailler.

Par exemple:

  • example.com/page.html devrait rediriger vers example.com/collector.html
  • example.com/foo/bar devrait rediriger vers example.com/collector.html
  • example.com/special/page.html ne doit pas rediriger

J'aurais pensé que quelque chose comme

RedirectMatch 302 ^/[^(special)]/.* /collector.html
RedirectMatch 302 ^/[^(collector.html)/]* /collector.html

ferait l'affaire, mais il ne semble pas fonctionner comme je veux.

Était-ce utile?

La solution

Peut-être cela? (Besoins mod_rewrite)

RewriteEngine On
RewriteRule !^(special(/.*)?|collector\.html)$ collector.html [R,L]

Autres conseils

Cela fonctionne bien pour moi sur Apache 2.2.13 où je recréé la structure du répertoire que vous avez décrit.

RedirectMatch 302 /(?!special)  http://www.example.com/collector.html

Le modèle dans les crochets dit ne correspondent pas si l'URI contient la chaîne « spéciale ».

Aussi mod rewrite est pas toujours disponible et dans ce cas n'est pas nécessaire.

Essayez ceci:

RedirectMatch 302 /\/[^(special)]\/.+/ /collector.html 
RedirectMatch 302 /\/[^(collector\.html)]/ /collector.html

Peut-être ...?

RewriteEngine on
RewriteRule ^(?!special) collector.html [R,NC]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top