djp1988 Posté 14 Février 2009 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
Dan Posté 14 Février 2009 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]
Leonick Posté 14 Février 2009 Posté 14 Février 2009 et plutôt que ([a-z])([a-z]), j'aurais mis (fr|en|de)
jcaron Posté 14 Février 2009 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant