Problème variable URL Rewriting

Nouveau WRInaute
Bonsoir à tous,

J'ai besoin de mettre en place l'URL Rewriting pour mon site.
Voici quel est mon htaccess pour le moment :

Code:
RewriteEngine On

# REWRITE POUR TELECHARGEMENTS
RewriteRule ^index\.html$ /telechargementsims3/index.php [QSA,L,NC]
RewriteRule ^telecharger-([a-z0-9_-]*)\.html$ /telechargementsims3/view_dl.php?cat=$1 [QSA,L,NC]
RewriteRule ^ajout-([a-z0-9_-]*)\.html$ /telechargementsims3/ajout_dl.php?cat=$1 [QSA,L,NC]
RewriteRule ^traitement-([a-z0-9_-]*)\.html$ /telechargementsims3/traitement_dl.php?cat=$1 [QSA,L,NC]
RewriteRule ^telecharger-([a-z0-9_-]*)-([0-9]+)\.html$ /telechargementsims3/view_dl.php?cat=$1&id=$2 [QSA,L,NC]

Seulement, pour la dernière réécriture, cela ne fonctionne pas. Dans mon fichier view_dl.php, je redirige vers l'index si $_GET['cat'] est différent de 'truc' (par exemple). Et en entrant l'url http://www.monsite.com/telechargementsims3/telecharger-truc-1.html, je suis redirigé vers l'index de mon site.

Je ne vois pas d'où peut venir ce comportement... Si quelqu'un peut m'éclairer. ;)

Merci d'avance et bonne soirée,

Guigui13

EDIT: Finalement, en passant la dernière réécriture en première, cela fonctionne. Je ne comprends cependant pas pourquoi...
 
WRInaute passionné
c'est normal car les règles sont évalués dans l'ordre. Comme "truc-1" match le pattern "[a-z0-9_-]*" c'est la première règle qui est appliquée. Tu te retrouves avec $_GET['cat'] = truc-1 => redirection vers l'index
 
WRInaute impliqué
Bonsoir,

En fait c'est pas trop dur a comprendre.
Dans ton cas, tu ne passais jamais pas la dernière règle, mais plutôt par celle ci :

Code:
RewriteRule ^telecharger-([a-z0-9_-]*)\.html$ /telechargementsims3/view_dl.php?cat=$1 [QSA,L,NC]

Dans un htaccess, tu dois toujours mettre la règle la plus contraignante en haut et la plus généraliste en bas.

Relis bien ton fichier et tu te rendra compte par toi meme que la 1ere condition est vérifié avec un [L], donc il n'ira pas voir ce qui se passe en dessous :-)
 
Discussions similaires
Haut