Page 1 sur 1

RewriteCond et variable GET pour des langues, complexe !

Posté : 22 sept. 2005, 15:33
par Hywan
Bonjour et merci de lire mon message (et si possible d'y répondre ^^)
Alors pour mon site, j'avais penser à faire un systeme d'urlrewriting avec un .htaccess. Tout va bien, je n'ai aucun probleme.

Sauf que j'aimerai que les URLs aient cette forme la :
monsite.net/lang/autre/chose/

et /lang/ soit comprit comme ?lang=$1

Donc j'ai pensé à faire une condition avec .htaccess, mais j'ai beau retourner le problème dans tout les sens, rien n'en tombe ...
Voici mon code

Code : Tout sélectionner

RewriteEngine on ###### # lang RewriteCond %{QUERY_STRING} ^lang=([^&]+)$ RewriteRule ^(.*){1,3}/(.*)/?$ index.php?lang=$1&$2 [L] RewriteRule ^(.*){1,3}/(.*)/?$ index.php?lang=fr&$2 [L] # !lang #######
Je pense que c'est le plus abouti de tous mes tests ...

J'ai regarder sur internet, mais les rares soluces que j'ai trouvé sont avec UNE seule variable, et j'ai rien derrière. Ca ne devrait pas poser de problème normalement, puisque j'ajoute $2 !

Si vous avez une petite astuce, et autre, je suis preneur :)

Merci Beaucoup

Posté : 22 sept. 2005, 16:51
par mere-teresa
Modération : je déplace ton sujet dans Autre, car il concerne la config serveur et Apache, plus que le PHP.

Posté : 24 sept. 2005, 08:31
par Hywan
merci de m'avoir déplacer, mais du coup j'ai pas eut de réponses lol ^^
c'est pas grave, en cherchant bien, et en étant reparti depuis 0, j'ai réussi :]

*joie*

merci

Posté : 24 sept. 2005, 13:11
par mere-teresa
En ce cas, peux tu mettre la bonne façon de faire ?
Celui qui a le même problème trouvera plus facilement.

Posté : 25 sept. 2005, 10:04
par Hywan
bonjour :)

ah oui jsuis désolé ! lol j'avais completement oublié :s pardon pardon pardon :oops:

alors, au lieu de boucler le value de ma première variable, boucle qui se lance selon le RewriteCond, j'ai tout simplement placé sur chacune de mes lignes, un petit motif, et la vérification du value ce fait en php, au début de ma page index (toutes les langues sont dans un array, et apres, in_array bla bla)
par exemple :

Code : Tout sélectionner

RewriteRule ^([a-z]+)/([A-Za-z0-9]+)/?$ /index.php?lang=$1&truc=$2 [L]
donc ^([a-z]+)/ est le motif qui va récupérer ma langue (de/, en/, fr/, ...)

et concernant php :
$langArray = array('en', 'fr', 'he');
if(in_array($_GET['lang'], $langArray))
	define("LANG", $_GET['lang'], TRUE);
else
	define("LANG", "fr", TRUE);
ce n'est pas mon code exact, je l'ai raccourcis volontairement, mais ca marche tout de meme.
de cette façon, la langue se retrouve dans une constante : LANG

voili voilou :)
passez tous une bonne journée, merci