Bonsoir à toutes et à tous,
J'ai récemment souhaité réécrire les urls de mon site, et j'ai commencé par la gestion multilingue. Pour transformer une url de type :
www.monsite.com/contact.php?langue=fr
en :
www.monsite.com/fr/contact
j'ai modifié mon fichier .htaccess de la manière suivante :
Jusque là, pas de problème, tout fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteRule ^(fr|en)/(.*) $2.php?langue=$1 [QSA,L]
Seulement, mon site a des références dans les résultats de recherche de Google, Yahoo et Bing. Pour éviter les contenus dupliqués, sanctionnés par Google, il me faut donc rediriger ces anciennes adresses (de type www.monsite.com/script.php?langue=fr) vers les nouvelles (de type www.monsite.com/langue/script). J'ai donc à nouveau modifié mon .htaccess de la manière suivante :
Et là, plus rien ne fonctionne !!! Que je clique sur un lien de mon site ou un lien Google vers mon site, la barre d'adresse indique correctement l'url réécrite dans Firefox, mais j'obtiens le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Options +FollowSymlinks RewriteEngine On RewriteBase / # Réécriture qui était OK RewriteRule ^(fr|en)/(.*) $2.php?langue=$1 [QSA,L] # Redirection 301 : pb RewriteCond %{QUERY_STRING} langue=(fr|en) RewriteRule ^(.*)\.php http://www.monsite.com/%1/$1? [R=301,L]
" La page n'est pas redirigée correctement
Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas. "
Jusqu'à peu, je faisais des .htaccess basiques et j'ai du récupérer des infos un peu partout - y compris sur developpez.com - pour commencer à comprendre un peu mieux les RewriteRule.
Mais là, je bloque. Deux jours que je m'arrache les cheveux sur ce problème.
Pour ne pas devenir chauve, j'ai préféré faire ce post, en espérant que quelqu'un pourra m'aider !
Partager