web-dev-qa-db-fra.com

Quelle directive de redirection avec Apache a choisi d'utiliser parmi les doublons?

Nous utilisons un serveur Apache avec un fichier .config pour effectuer des redirections 301 permanentes.

Le site Web est principalement géré et le contenu est fourni par le client. Ce site Web particulier change très souvent et je suis donc fréquemment invité à ajouter des redirections 301 au fur et à mesure que les pages changent.

Cela a entraîné plusieurs redirections pour les mêmes URL que ci-dessous:

Redirect 301 "/foo/old" "/foo/new"
Redirect 301 "/foo/old" "/foo/bar/new"
Redirect 301 "/foo/old" "/new/foo"

Laquelle de ces redirections sera utilisée par Apache? Configtest me dit que la syntaxe est OK.

2
user86156

Laquelle de ces redirections sera utilisée par Apache?

Apache traitera le fichier .Htaccess de haut en bas. Lorsqu'une condition est remplie, elle est traitée. Une fois cela fait, Apache commencera au sommet et traitera à nouveau toutes les règles pour s'assurer qu'il n'y a plus de conditions correspondantes.

En utilisant votre exemple, une fois la première règle

Redirect 301 "/foo/old" "/foo/new"

est comparé à la condition "/foo/old" il traite la règle et redémarre. Cependant, la demande porte désormais "/foo/new" et ne correspond à aucune condition définie dans les règles. Par conséquent, seule la première règle de votre exemple peut être traitée. Vous ne devriez avoir qu'une seule règle par condition.

2
closetnoc