URL Rewriting avec 1 ou 2 paramètres

Nouveau WRInaute
Sur mon site, en fonction des pages, j'ai un ou deux paramètres
par exemple
index.php?param1=toto
ou
index.php?param1=toto&param2=tata

Le but serait d'avoir en fonction des pages :
toto.html
ou
toto-tata.html

J'arrive à faire l'URL rewriting pour les pages avec un paramètre et celles avec 2 paramètres, mais pas pour les 2 types de pages en même temps.

J'ai essayé en faisant ce code mais ça ne marche pas :
Code:
RewriteEngine on
RewriteRule ^(.*).html$ /index.php?param1=$1 [L]
RewriteRule ^(.*)-(.*).html$ /index.php?param1=$1&param2=$2 [QSA,L]

Il ne prend que la première ligne mais pas la deuxième.
 
WRInaute discret
C'est normal.

Si tu es dans le second cas, la première expression rationnelle va fonctionner et donc ce sera seulement cette règle qui sera appliquée (L comme last)

Essaies en inversant les deux tests pour déjà tester la regexp la "moins gourmande".
RewriteEngine on
RewriteRule ^(.*)-(.*).html$ /index.php?param1=$1&param2=$2 [QSA,L]
RewriteRule ^(.*).html$ /index.php?param1=$1 [L]
 
WRInaute discret
et si ca ne fonctionne toujours pas, il faut peut-être utiliser \- au lieu de - dans la règle de ré-écriture car - doit être un caractère spécial dans les regexp...
 
WRInaute passionné
Je crois que le - est considéré comme un caractère spécial uniquement dans les classes [ ]. A confirmer.
 
WRInaute discret
le top c est la reecriture d url recursive ...

Code:
RewriteRule index(-.+)-([^-]+)-([^-&]*)([^-]*)\.html index$1&$2=$3$4\.html [N]
RewriteRule index-([^-]+)-([^-]*)(.*)\.html index.php?$1=$2$3 [L]

ensuite tu peux passer autant de parametre que tu veux sur ton fichier index.php avec la syntaxe suivante ...

index-var1-valeur1-var2-valeur2-var3-valeur3......................html

il va de soi que tu remplace index par le fichier que tu veux, et aussi que le .htaccess est valable uniquement pour son repertoire ;)

++
 
Discussions similaires
Haut