URL rewriting et 3 paramètres alpha num - num - alphanum

WRInaute discret
Bonjour à tous,

Je rencontre actuellement un problème dans une rubrique de mon site. J'appelle un script php avec 3 paramètres (catégorie, id, produit). J'ai donc écrit la règle de réécriture suivante :

Code:
RewriteRule ^(.*)-(.*)-(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]

Jusque là tout va bien, sauf que la variable produit peut contenir des chiffres, et qu'elle peut, comme catégorie, contenir des tirets. Le chiffre qui compose la variable produit est alors confondur avec l'id. J'ai donc modifier pour arriver à ça :

Code:
RewriteRule ^(-[a-z]*)-([0-9]*)-(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]

Mais là pas mieux, l'id ne passe carrément jamais.

Qu'en pensez vous ? Revoir le code (mais comment) ? Changer le modèle d'URL (avec par exemple l'id en premier) ?
 
Nouveau WRInaute
si ta variable produits ne comporte ni "_" ou ni "/" tu peut au choix faire :
^(.*)_(.*)_(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]
ou
^(.*)/(.*)/(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]
 
WRInaute discret
Merci.

webmasterlamogere a dit:
c'est surement pas (-[a-z]*) mais ([a-z-]*)

J'ai plus la source sous les yeux, je vais vérifier si je ne me suis pas effectivment planté !

r._xmouse a dit:
si ta variable produits ne comporte ni "_" ou ni "/" tu peut au choix faire :
^(.*)_(.*)_(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]
ou
^(.*)/(.*)/(.*).html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]

Merci pour la suggestion, je vais m'y pencher ce soir. Le problème avec cette solution, c'est qu'elle me fait perdre mes URLs et donc mon positionnement ... Dommage, j'aurais du y penser avant !
 
WRInaute discret
J'ai finalement trouvé la solution ultime, sans changer d'URL :

Code:
RewriteRule ^([a-z-]*)([0-9]+)-(.*)\.html$ mapage.php?categorie=$1&id=$2&produit=$3 [L]

Merci pour votre aide.
 
Discussions similaires
Haut