djp1988 Posté 14 Février 2009 Partager Posté 14 Février 2009 (modifié) Avec mon .htaccess, je cherche à détecter un /fr/ ou /en/ ou bien /de/ et aller chercher le fichier dont la suite de l'url indique en ajoutant ?l=<en | fr | de> Mais ce quej'ai fais ne marche pas, je ne sais pas pourquoi: RewriteRule ^([a-z])([a-z])/(.*)?(.*)$ http://www.domain.com/$3?l=$1$2&$4 [nc] Exemple: domain.com/fr/home.php?show=all&variable=valeurva chercher le fichier:domain.com/home.php?l=fr&show=all&variable=valeur mais je n'arrive pas à generer $4, ce que je trouve logique parceque $3 est (.*) donc logiquement ca va jusqu'à la fin, mais comment j'utilise le regex pour s'arreter à un "?" RewriteRule ^([a-z])([a-z])/(.*!?)?(.*)$ http://www.domain.com/$3?l=$1$2&$4 [nc] Ca ne marche pas... Alors je vais devoir avoir deux lignes de code un pour gerer s'il y a des valeurs get et l'autre s'il y a pas de "?" RewriteRule ^([a-z])([a-z])/(.*!?)?(.*)$ http://www.domain.com/$3?l=$1$2&$4 [nc]RewriteRule ^([a-z])([a-z])/(.*!?)$ http://www.domain.com/$3?l=$1$2 [nc] Quel est la bonne methode pour soit exclure le caractere "?" de (.*) ou alors la bonne methode pour inclure un "." et un "/" dans un ([a-zA-Z0-9_-]) Modifié 14 Février 2009 par djp1988 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 14 Février 2009 Partager Posté 14 Février 2009 Tout simplement parce que le query string est exclu de la règle et qu'il faut le traiter à part. Si tu veux l'ajouter, il suffit de mettre le flag [QSA] RewriteRule ^([a-z])([a-z])/(.*) http://www.domain.com/$3?l=$1$2 [NC,QSA] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonick Posté 14 Février 2009 Partager Posté 14 Février 2009 et plutôt que ([a-z])([a-z]), j'aurais mis (fr|en|de) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 14 Février 2009 Partager Posté 14 Février 2009 Et "?" est un caractère spécial dans une regex (comme *, +, ., etc.), qui signifie "0 ou 1 fois l'élément précédent". Il faut donc l'escaper (avec un \). Sinon de façon plus générale, pour que .* prenne tout jusqu'à un caractère donné, tu peux utiliser "[^x]*", x étant le caractère à ne pas prendre en compte (ça veut dire "de 0 à n fois tout caractère sauf x"). Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant