Aller au contenu


Apache: ordre de traitement des RewriteRule et RedirectMatch

Quelque chose qui pourra être utile si vous utilisez dans un même virtualhost, les directives RewriteRule (mod_rewrite) et RedirectMatch (mod_alias): il faut savoir que l’ordre dans lequel vous placez ces directives dans votre configuration n’est pas forcément l’ordre de traitement. Etant donné que ces deux directives sont traitées par deux modules différents, même si vous placez une RedirectMatch entre deux RewriteRule, les RewriteRule pourront être exécutées avant, puis viendra la RedirectMatch:

[code]
RewriteRule ^/abc /def – [L]
RedirectMatch ^/aabbcc https://www.site.com/ddeeff
RewriteRule .* index.php
[/code]

Ce qui fait que dans tous les cas, la Rewrite vers index.php est executée.

Une (la?) solution pour contourner ceci est donc de remplacer votre RedirectMatch pas un RewriteRule avec les flags [R=301,L], pour s’assurer de l’ordre de traitement.

[code]
RewriteRule ^/abc /def [L]
RewriteRule ^/aabbcc https://www.site.com/ddeeff  [R=301,L]
RewriteRule .* index.php
[/code]

Si vous avez une meilleure solution à proposer, n’hésitez pas :)

Posté dans Web. Tags , .

0 commentaire(s)

Quelques tags HTML sont acceptés

(obligatoire)

(obligatoire, mais ne sera pas diffusé)

ou faire un rétrolien depuis votre site.