Un problème de redirection en boucle se produit parfois lorsque l’on cherche à faire une redirection 301 d’une page non-rewritée vers une page rewritée.
Exemple :
J’ai une page dont l’url est www.monsite.ndd/ma_page.php
Je souhaite la rewritée en www.monsite.ndd/une-url-propre-pour-ma-page
J’écris donc dans mon fichier htaccess :
RewriteRule ^une-url-propre-pour-ma-page$ /ma_page.php
Cependant, un problème se pose : l’url /ma_page.php est toujours accessible.
Je souhaiterais que si l’utilisateur tape www.monsite.ndd/ma_page.php il soit automatiquement redirigé vers : www.monsite.ndd/une-url-propre-pour-ma-page.
Mais si on écrit une règle qui renvoie ma_page.php vers /une-url-propre-pour-ma-page et qu’on laisse la règle ci-dessus…
Nous voilà avec une belle boucle infinie :S
Voici donc une solution :
RewriteRule ^une-url-propre-pour-ma-page$ /ma_page.php [L,E=NOM_DE_MA_VAR:1]
RewriteCond %{ENV:REDIRECT_NOM_DE_MA_VAR} !=1
RewriteRule ^ma_page.php /une-url-propre-pour-ma-page [R=301]
Ce code effectuera la redirection une seule fois, ce qui est bien pratique dans notre cas.