Redirection selon langue visiteur avec .htaccess

Résolu/Fermé
AnhTuanFevre Messages postés 219 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 24 juillet 2015 - 30 avril 2015 à 17:23
AnhTuanFevre Messages postés 219 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 24 juillet 2015 - 11 mai 2015 à 03:46
Bonjour,

J'ai un problème de redirection de langue avec un fichier .htaccess situé à la racine.

Avec ce code :

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* http://www.androot.tk/fr/index [R,L]
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* http://www.androot.tk/en/index [R,L]

Il me met une boucle de redirection. Quel est le problème ?

Donc pour l'instant j'ai mis un fichier index.html à la racine avec des redirections Javascript selon la langue du visiteur qui marche bien mais ce n'est pas très "propre".

Merci de votre aide.
A voir également:

3 réponses

animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié par animostab le 1/05/2015 à 02:26
Salut
C'est normal
si es dirigé vers /fr/index et ton ordi est en français tu sera continuellement redirigé vers le page /fr/index etc etc --> boucle
tu dois faire une 2eme condition avec request_uri et !^/fr/index

cependant pense que si je suis francais aux etat unis avec un ordi anglais, je ne pourrais jamais acceder à la section en français avec une redirection forcée

si je suis déjà sur une page de ton site, dans ma langue (trouvée par google) autre que index je serais redirigé vers index donc fais plutot une redirection vers la page correspondante sans oublier la condition qui évite la boucle pour toute la section /fr
exemple un truc du genre
RewriteRule ^/en/(.*)$ /fr/$1

Mais le mieux reste de donner le choix :
si ton site a la meme arborescence dans chaque langue je ferais plutot des drapeaux avec lien généré en php vers la page de la langue correspondante (pour chaque page)
récuperer nom de la page en cours
https://www.developpez.net/forums/d325175/php/langage/obtenir-nom-page-courante/




Un petit merci vaut mieux qu'une grande ignorance !
Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
2
AnhTuanFevre Messages postés 219 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 24 juillet 2015 16
1 mai 2015 à 09:56
Donc tu me proposes plutôt de donner le choix aux visiteurs ? En fait pour l'instant, j'ai placé un index.html à la racine avec seulement un code JavaScript redirigeant vers la partie anglaise de mon site ou la partie française de mon site situés dans des sous-dossiers "fr" et "en". C'est pas très "propre" donc comme je ne sais pas trop quoi écrire dans le fichier .htaccess (j'ai fait plus ou moins fait du copié-collé...), j'aimerai te demander de juste m'écrire ce petit script pour la redirection s'il te plaît..

J'aimerai que le script redirige vers la partie française (situé dans un sous-dossier "fr") si le visiteur a un navigateur paramétré en français et si le visiteur n'a pas de navigateur paramétré en français, il sera redirigé par défaut sur la partie anglaise de mon site (situé dans un sous-dossier "en"). J'aimerai également que le script soit plus facilement modifiable pour que je puisse ajouter d'autres langues plus tard.

Tu m'aideras énormément.

Merci de ta compréhension.
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 738
Modifié par animostab le 1/05/2015 à 18:54
salut
essaie ca

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteCond %{REQUEST_URI} !^/fr/index$ [NC]
RewriteRule ^(.*)$ http://www.androot.tk/fr/index [R,L]
##
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} !(fr) [NC]
RewriteCond %{REQUEST_URI} !^/en/index$ [NC]
RewriteRule ^(.*)$ http://www.androot.tk/en/index [R,L]


ou si c'est la meme arborescence

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/fr/.*$
RewriteCond %{HTTP:Accept-Language} ^.*fr.*$ [NC]
RewriteRule ^(.*)$ http://www.androot.tk/fr/$1 [L]

RewriteCond %{REQUEST_URI} !^/en/.*$
RewriteCond %{HTTP:Accept-Language} !^.*fr.*$ [NC]
RewriteRule ^(.*)$ http://www.androot.tk/en/$1 [L]


Un petit merci vaut mieux qu'une grande ignorance !
Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
0
AnhTuanFevre Messages postés 219 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 24 juillet 2015 16
1 mai 2015 à 23:44
Je te remercie énormément ! Je vais tester ça demain. J'espère que ce sera la bonne parce que j'ai testé de nombreux scripts qui n'ont fait que des boucles de redirection.

Normalement ce sera le bon script. Je te dirai demain si c'est le bon.
0
Bonjour,

Merci pour vos échanges, questions réponses, cela m'a beaucoup aidée, et ça fonctionne bien maintenant !

Je me demandais s'il y avait possibilité de donner l'accès tout de même au site anglais ? Parce que du coup, meme si je clique sur le flag UK de mon site, la redirection me renvoie au .fr (normal...)

En fait je laisse les drapeaux au cas où... Mais là, on dirait juste que mes drapeaux ne fonctionnent pas :)

si vous avez une piste, merci beaucoup !

EDIT : en fait, même pour l'admin, il ne me laisse plus accéder à la version EN. Suis une quiche...
0
AnhTuanFevre Messages postés 219 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 24 juillet 2015 16
11 mai 2015 à 03:46
Bonjour,

J'espère que cela vous a aidé. Pour ma part j'ai eu quelques problèmes insolvables avec HTACCESS et donc j'ai mis un index.HTML à la racine redirigeant vers l'index correspondant à la langue situé dans un sous-dossier.
0