Bonjour,
J'ai un site internet avec une variable GET lang sur toutes mes pages.
Pour changer la langue, c'est simple, je met soit ?lang=fr soit ?lang=en.
Par contre, pour que ce soit plus propre, et surtout pour que les liens hypertexte conserve la langue (la variable GET) sans devoir faire quoique ce soit dans le code, il faut faire croire que le site se trouve dans un dossier. Comme ça, avec un chemin relatif, la langue est conservée sur toutes les pages.
Du coup, c'est fait pas mal de recherche, et j'ai déjà ça, et ça fonctionne :
J'ai ensuite ajouté ceci (pour que l'index.php soit prit en charge) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule ^(fr|en)/(.*).php$ $2.php?lang=$1 [L,QSA]
Est-ce qu'il y a un meilleur moyen de procéder pour ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule ^(fr|en)/$ index.php?lang=$1 [L,QSA]
Ensuite, c'est là que commence mes problèmes...
Je veux que l'on puisse accéder au site comme ceci : http://localhost/fr/ (fr ou en, avec un slash à la fin).
Mais pas comme ceci http://localhost/fr (sans slash).
Si il n'y à pas de slash, je veux que ça redirige avec le slash.
J'ai pensé à un truc comme ça, mais je pense que c'est pas le top :
Qu'en dites-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule ^(fr|en)$ http://%{HTTP_HOST}/$1/ [R=301,QSA]
Ensuite, pour finir, et là, c'est mon plus gros problème : comment faire pour bloquer l'accès au site sans /fr/ ou /en/ dans l'URL ?
J'ai pensé à un truc comme ça, mais ça ne fonctionne pas.
J'aimerais que si on accède au site sans la variable dans l'URL (/fr/ ou /en/), que ça redirige vers le /fr/ par défaut).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RewriteRule ^/?$ http://%{HTTP_HOST}/fr/ [R=301,QSA] RewriteRule ^/(a-zA-Z0A-9).php$ http://%{HTTP_HOST}/fr/$1.php [R=301,QSA]
Voici mon fichier total actuel :
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Options +FollowSymlinks RewriteEngine on # Détection de la langue pour toutes les pages RewriteRule ^(fr|en)/(.*).php$ $2.php?lang=$1 [L,QSA] # Détection de la lanque pour index.php (si non présisée dans l'URL) RewriteRule ^(fr|en)/$ index.php?lang=$1 [L,QSA] # Interdiction (avec redirection) d'accès sans le slash final RewriteRule ^(fr|en)$ http://%{HTTP_HOST}/$1/ [R=301,QSA] # Interdiction (avec redirection) d'accès au site sans langue (variable) RewriteRule ^/?$ http://%{HTTP_HOST}/fr/ [R=301,QSA] RewriteRule ^/(a-zA-Z0A-9).php$ http://%{HTTP_HOST}/fr/$1.php [R=301,QSA]
Partager