Bonjour !
Je me permets de vous demander de l'aide suite à un arrachage de cheveux depuis quelques jours...
J'ai mis en place un site web multilingue (français et anglais pour le moment).
Actuellement, le langage est pris en compte selon des variables de session (GET) de ce type : http://www.example.com/fr/index.php?lang=fr
Afin de faire quelque chose de carré d'un point de vue SEO, j'ai opté pour un URL Rewriting par sous-dossiers pour avoir des url de ce type : http://www.example.com/fr/index.php
Le site interprète bien ces nouvelles URL grâce à la règle .htaccess suivante :
Jusqu'ici pas de problèmes, mise à part que si quelqu'un arrive sur le site en tapant uniquement le nom de domaine http://www.example.com, il faut que je force une redirection vers une langue : http://www.example.com/xx/ (xx représentant ici fr ou en) afin de ne pas avoir une troisième alternative d'URL mais uniquement deux pour deux langues.
J'ai donc rajouté la règle suivante :
Ca à l'air de fonctionner, seulement qu'on arrive sur la page d'accueil ou via une autre URL, la redirection se fera tout le temps sur la page d'accueil (index.php) et non pas selon la page en cours.
J'ai testé en ne précisant pas index.php mais, surement dû à la première règle cela me donne : http://www.example.com/fr/?lang=fr&lang=fr&lang=fr&lang=fr&lang=fr...
Auriez-vous une idée pour pallier le problème ?
Un grand merci d'avance pour vos réponses !
Modifié par salvia34 (21 May 2013 - 17:52)
Je me permets de vous demander de l'aide suite à un arrachage de cheveux depuis quelques jours...
J'ai mis en place un site web multilingue (français et anglais pour le moment).
Actuellement, le langage est pris en compte selon des variables de session (GET) de ce type : http://www.example.com/fr/index.php?lang=fr
Afin de faire quelque chose de carré d'un point de vue SEO, j'ai opté pour un URL Rewriting par sous-dossiers pour avoir des url de ce type : http://www.example.com/fr/index.php
Le site interprète bien ces nouvelles URL grâce à la règle .htaccess suivante :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(fr|en)/(.*)$ $2?lang=$1 [L,QSA]
Jusqu'ici pas de problèmes, mise à part que si quelqu'un arrive sur le site en tapant uniquement le nom de domaine http://www.example.com, il faut que je force une redirection vers une langue : http://www.example.com/xx/ (xx représentant ici fr ou en) afin de ne pas avoir une troisième alternative d'URL mais uniquement deux pour deux langues.
J'ai donc rajouté la règle suivante :
# Si langage FR détecté, alors forcer sur /fr/
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/index.php [L,R=301]
# Pour tout autre langage détecté, alors forcer sur /en/
RewriteRule ^$ /en/index.php [L,R=301]
Ca à l'air de fonctionner, seulement qu'on arrive sur la page d'accueil ou via une autre URL, la redirection se fera tout le temps sur la page d'accueil (index.php) et non pas selon la page en cours.
J'ai testé en ne précisant pas index.php mais, surement dû à la première règle cela me donne : http://www.example.com/fr/?lang=fr&lang=fr&lang=fr&lang=fr&lang=fr...
Auriez-vous une idée pour pallier le problème ?
Un grand merci d'avance pour vos réponses !
Modifié par salvia34 (21 May 2013 - 17:52)