web-dev-qa-db-fra.com

Expression régulière pour la redirection Apache

Dans le fichier .htaccess, je voudrais rediriger (301):

De: http://www.example.com/photo<anything>
À: http://www.example.com/blog/

En principe, toute URL commençant par /photo doit être redirigée vers l’URL unique /blog/. Quelle est l'expression régulière pour cela?

1
Sam

J'ai découvert:

RedirectMatch 301 ^/photo/ http://www.example.com/blog/

1
Sam

Cela fonctionnera si votre serveur est Apache avec mod_rewrite activé:

RewriteEngine On
RewriteRule ^photo(.*)$ http://www.example.com/blog/ [R=301,L]

et si les caractères majuscules ou minuscules sont acceptables, utilisez ceci:

RewriteEngine On
RewriteRule ^photo(.*)$ http://www.example.com/blog/ [R=301,L,NC]

En raison de la redirection, je recommanderais d'utiliser l'URL absolue absolue vers laquelle rediriger au lieu d'une URL relative, car un document rfc (j'ai oublié le numéro rfc) a déjà indiqué que l'en-tête Location d'une page de redirection devait être une URL absolue absolue, mais puis un autre document rfc a indiqué plus tard que l'URL pouvait être relative, mais si vous voulez augmenter la compatibilité de chaque navigateur Web, je suggérerais d'utiliser des URL absolues pour toutes les redirections.

1
Mike

Vous n'avez même pas besoin d'une expression régulière. La directive Redirect gère ce cas facilement:

redirect permanent /photo/ http://www.example.net/blog/
redirect permanent /photo http://www.example.net/blog

dans le fichier . htaccess du serveur example.com. Par défaut, la directive de redirection enregistre tout élément supplémentaire sur le chemin (/photos/hello) et l'ajoute à la destination (/blog/hello).

0