gestion du multilangue

evaness

Nouveau WRInaute
bonjour,
j'ai un site multilangue où le parametre de langue doit etre recu par get dans toutes mes pages, je veux donc que
/es/mapage.php --> mapage.php?lang=es
et que ca marche pour tous les cas:
/es/repertoire/mapage.php --> /repertoire/mapage.php?lang=es
/es/repertoire/mapage.php?param1=1& param2=2 --> /repertoire/mapage.php?param1=1& param2=2&lang=es

j'ai essayé
Code:
RewriteRule ^(..)/(.+)$ $2&Lang=$1 [L]
mais ca na marche pas du tout, et en plus je ne vois pas comment lui dire de mettre à la fin
?lang=$1 s'il n'y a pas d'autres parametres GET ou
&lang=$1 s'il y en a d'autres

Je débute en url rewriting, si quelqu'un peut m'aider, merci.
 

nikoshr

WRInaute occasionnel
Quelque chose comme
Code:
RewriteRule ^(..)/(.+)$ $2?Lang=$1 [QSA,L]
Le flag QSA indique qu'il faut ajouter les paramètres passés avec l'URL.
 

evaness

Nouveau WRInaute
merci, ca a l'air de bien marcher.

mais j'ai encore qq questions:

1> quand je met la regle:
Code:
RewriteRule ^(..)/(.+)$ http://localhost/$2?Lang=$1 [QSA,L]

j'ai bien /es/mapage.php --> mapage.php?lang=es

mais dans la barre d'adresse de mon navigateur (IE 6.0, easyphp 1.6, Win XP Pro) je vois mapage.php?lang=es ;d'apres ce que j'avais compris de l'url rewriting, je ne devrais voir plutot l'adresse d'origine?

2>/Es/mapage.php --> mapage.php?lang=es
je perds ma majuscule du "Es", c'est parceque je suis en local avec windows et easyphp?
 

nikoshr

WRInaute occasionnel
1/ En indiquant dans la règle un nom de domaine RewriteRule ...$ http://localhost/... tu forces une redirection et pas une translation d'URL au niveau du serveur, ce que faisait la syntaxe initiale.

2/ Apache ou le navigateur, mais c'est fait avant l'UR
 

evaness

Nouveau WRInaute
bon, d'accord. si je met -http://localhost/ , c'est parce que j'ai en local une vieille vertion d'apache et que ca ne marche pas sans ça, mais j'enleverais les localhost avant d'envoyer le .htacess sur le vrai serveur.

une autre question:
toutes mes pages ressembleront donc a /es/mapage.php , avec un faux répertoire de langue devant, sauf la page initiale /index.php
je voudrais que ceux qui entrent avec -www.monsite.com/ ou -www.monsite.com/index.phtml soient redirigés sur la langue de leur navigateur, grace à la variable HTTP_ACCEPT_LANGUAGE (ou français s'il n'y en a pas)
je pensais ecrire:
Code:
RewriteCond  %{HTTP_ACCEPT_LANGUAGE} ^fr$
RewriteRule  ^index.php$  index.php?lang=fr [L]
RewriteCond  %{HTTP_ACCEPT_LANGUAGE} ^es$
RewriteRule  ^index.php$  index.php?lang=es [L]
RewriteCond  %{HTTP_ACCEPT_LANGUAGE} ^$
RewriteRule  ^index.php$  index.php?lang=fr [L]
1> ça ne marche pas, on dirait qu'il ne peut pas recupérer les 2 lettres de la langue.
2> j'ai essayé juste les 2 dernières lignes et j'ai une boucle infinie, comment je peux lui dire: "uniquement si index.php n'a pas deja de parametres"?
 

Discussions similaires

Haut