J'utilise le mod_rewrite
d'Apache pour que l'URL de mon application soit jolie. J'ai les bases de mod_rewrite
down pat - plusieurs parties de mon application utilisent des réécritures simples et prévisibles.Faire face à plusieurs paramètres optionnels avec mod_rewrite
Cependant, j'ai écrit une fonction de blog, qui utilise plusieurs paramètres différents.
http://www.somedomain.com/blog/
http://www.somedomain.com/blog/tag/
http://www.somedomain.com/blog/page/2/
Je les règles suivantes dans mon .htaccess:
RewriteRule ^blog/ index.php?action=blog [NC]
RewriteRule ^blog/(.*) index.php?action=blog&tag=$1 [NC]
RewriteRule ^blog/page/(.*) index.php?action=blog&page=$1 [NC]
Cependant, les règles ne fonctionnent pas ensemble. L'ordinateur correspond à la première règle, puis arrête le traitement - même si, à mon avis, il ne devrait pas correspondre. Je dis à la machine de correspondre ^blog/
et il va de l'avant et correspond ^blog/tag/
et ^blog/page/2/
qui me semble erroné.
Qu'est-ce qui ne va pas avec mes règles? Pourquoi ne sont-ils pas évalués comme je l'ai prévu?
Edit: La réponse a été de mettre fin à l'entrée à l'aide $
et réordonner les règles, imperceptiblement:
RewriteRule ^blog/$ index.php?action=blog [NC,L]
RewriteRule ^blog/page/(.*)$ index.php?action=blog&page=$1 [NC,L]
RewriteRule ^blog/(.*)$ index.php?action=blog&tag=$1 [NC,L]
Ces règles ont produit l'effet désiré.
Dav, votre partie « fin de l'entrée » a été très utile. Je vais mettre à jour ma question pour refléter la réponse. Merci! – EvilChookie