Bonjour,

J'ai un fichier .htaccess dans lequel j'ai inséré un code qui redirige les visiteur en fonction de leur pays.

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^US [NC]
RewriteRule ^$ /?lang=us [L,R=301]

Toute fois j'ai une boucle redirection, ce qui est logique car il redirige toutes mes pages quels qu'elles soient vers /lang=us

Pour être plus précise, au clik sur le choix d'une langue, c'est le menu qui est modifié et qui permet donc de naviguer au travers du site dans la bonne langue, mais le paramètre "lang=" disparait de l'url et n'est pas retenue ni par un cookie, ni par une session.

J'ai essayer 2 solutions hier, qui devraient théoriquement marcher mais... ça ne fonctionne pas!

Solution1
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^FR //si IP Francais
RewriteCond %{REQUEST_URI} !(^.$) // et qu'il n'y a pas de paramettre dans l'URL (seulement monsite.info et pas monsite.info/articleX)
RewriteRule ^$ /?lang=fr [L,R=301] //Reconduire sur lang=fr

Solution2
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^FR //si IP Francais
RewriteRule .info$ /?lang=fr [L,R=301] //Reconduire, que la home page, vers lang=fr

Je ne comprend pas pourquoi ces méthodes ne fonctionnent pas? y a t'il des erreurs de syntaxes?

Si quelqu'un peut m'aider...!!!

Merci d'avance pour vos réponses!!!

2 réponses


Pourquoi ne pas le faire avec ton langage côté serveur plutôt ? Cela me semble périeux de demander à Apache de gérer la chose.

Naama
Auteur

Effectivement je me tourné vers du php classique pour gerer le probleme, et entre temps j'ai trouvé la solution!
La boucle s'arrete grace à la condition de ne pas avoir la variable lang= dans l'url.

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^FR [NC]
RewriteCond %{QUERY_STRING} !^c=(ca|fr|es|uk|de|it)$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule ^(.*)$ /fr/?c=fr [L,R=301]

Merci à vous en tout cas!!!