Aller au contenu

Problème lors de tiret dans l'url


Sujets conseillés

Bonjour

Je fais mes débuts en .htaccess. J'ai réussi à réecrire à peu près proprement mes urls mais j'ai un problème lorsqu'il y a des tirets dans l'url que je veux réecrire..

Exemple :

http://www.domain.com/articles/liste.php?type=modele&categorie=PANTALON&gamme=2

devient

http://www.domain.com/articles/modele-pantalon-2.html

grâce à

RewriteRule ([^/]+)-([^/]+)-([0-9]+)\.html$  /articles/liste.php?type=$1&categorie=$2&gamme=$3 [NC,L]

Mais comment faire lorsque j'ai des urls de ce type??

http://www.domain.com/articles/liste.php?type=modele&categorie=PANTALON-COURT&gamme=2

Merci!

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Il n'y a pas de solution simple qui permette d'utiliser le tiret, à la fois, comme séparateur des variables et à l'intérieur d'une variable.

Tu pourrais utiliser la virgule pour séparer les variables et conserver le tiret dans les noms composés. Cela donnerait quelque chose comme

http://www.domain.com/articles/modele,pantalon,2.html

http://www.domain.com/articles/modele,pantalon-court,2.html

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse Jeanluc

Les virgules, je ne suis pas trop pour... ça me plait moyennement..

Il n'y a donc pas d'autre solution?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Marie,

Je pense que tu dois ajouter un groupe facultatif à ton expression:

RewriteRule ([^/]+)-([^/]+)-([^-]*)([0-9]+)\.html$ /articles/liste.php?type=$1&categorie=$2$3&gamme=$4 [NC,L]

un groupe facultatif de caractères, à lexclusion du tiret, contenant la partie de lexpression déjà traitée ([^-]*)
Lien vers le commentaire
Partager sur d’autres sites

D'accord sur le principe, à condition qu'uniquement la deuxième variable puisse être un nom avec tiret. ;)

Je pense que la règle que tu donnes n'est pas tout à fait correcte :

RewriteRule ([^/-]+)-([^/]+)-([0-9]+)\.html$ /articles/liste.php?type=$1&categorie=$2&gamme=$3 [NC,L]

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Héhé!

Excellent!

La règle de Jeanluc marche à merveille.

Le site rempli la condition, seule la deuxième variable possède parfois un tiret.

Merci Nicolas et Jeanluc :wub:

Y'a pas à dire, c'est vraiment un métier :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

Bon c'est là qu'on s'aperçoit que je débute...

Je n'avais pas prévu tous les cas semble-t-il..

En plus des urls du type

http://www.domain.com/articles/liste.php?type=modele&categorie=PANTALON&gamme=2

j'ai aussi des urls du type

http://www.domain.com/articles/liste.php?type=modele&categorie=CHAUSSURES

Et là forcément ma règle ne fonctionne pas...

Que dois-je faire?

Merci!

Lien vers le commentaire
Partager sur d’autres sites

Il faut alors ecrire 2 règles : une pour 2 variables et une pour 3 variables.

Il y a p-e plus simple mais j'ai eu le même problème et en écrivant 2 règles cela fonctionne.

EDIT: Il faut mettre la règle avec 3 variables en 1er (à confirmer)

Lien vers le commentaire
Partager sur d’autres sites

Il faut alors ecrire 2 règles : une pour 2 variables et une pour 3 variables.

<{POST_SNAPBACK}>

Arf! je n'y avais pas pensé! Et ça marche!

Merci Nicolas ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...