Marie Posté 30 Janvier 2006 Partager Posté 30 Janvier 2006 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 More sharing options...
Jeanluc Posté 30 Janvier 2006 Partager Posté 30 Janvier 2006 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.htmlhttp://www.domain.com/articles/modele,pantalon-court,2.html Jean-Luc Lien vers le commentaire Partager sur d’autres sites More sharing options...
Marie Posté 30 Janvier 2006 Auteur Partager Posté 30 Janvier 2006 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 More sharing options...
Nicolas Posté 30 Janvier 2006 Partager Posté 30 Janvier 2006 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 More sharing options...
Jeanluc Posté 30 Janvier 2006 Partager Posté 30 Janvier 2006 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 More sharing options...
Marie Posté 30 Janvier 2006 Auteur Partager Posté 30 Janvier 2006 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 Y'a pas à dire, c'est vraiment un métier Lien vers le commentaire Partager sur d’autres sites More sharing options...
Marie Posté 30 Janvier 2006 Auteur Partager Posté 30 Janvier 2006 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 More sharing options...
Nicolas Posté 30 Janvier 2006 Partager Posté 30 Janvier 2006 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 More sharing options...
Marie Posté 30 Janvier 2006 Auteur Partager Posté 30 Janvier 2006 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 More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant