Plusieurs regles qui rentrent en conflit...

WRInaute passionné
Hello all!

Alors voila, j'ai plusieurs regles sur une page, la derniere, forcément rentre en conflit avec les deux premiere, je pense que vous comprendrez en voyant le code:

Code:
##STYLE
RewriteRule ^mp3/(.*)-([0-9]*)\.html$ /mp3/index.php?st=$2&nom=$1 [L]

##STYLE ET SOUS STYLE
RewriteRule ^mp3/([^-]+)-(.*)_([0-9]*)_([0-9]*)\.html$ /mp3/index.php?st=$3&ss=$4&nom=$1&ssnom=$2 [L]

#FICHE ALBUM
RewriteRule ^mp3/([0-9]*)-(.*)_([0-9]*)-([0-9]*)\.html$ /mp3/index.php?nomalbum=$2&st=$1&ss=$3al=$4 [L]

La variable nom contient des lettres et des tirets
La variable ssnom contient des lettres et des virgules
La variable nomalbum contient des lettres et des virgules aussi.

Comment faire? Déjà j'ai du bidouiller pour que ça fonctionne en mettant des tirets et des underscore pour séparer mes variables rewriter... :(
 
WRInaute passionné
Code:
RewriteRule ^mp3/([0-9]*)-(.*)_([0-9]*)-([0-9]*)\.html$ /mp3/index.php?nomalbum=$2&st=$1&ss=$3al=$4 [L]

Remplacer (.*) par ([:alnum:]|,)* peut être...?
 
WRInaute accro
la régle la plus spécifique avant l'autre, et il n'y aura jamais de conflit, tout simplement :) je dirai que la 1 s'execute avant ta 3, pas la 2
 
WRInaute occasionnel
Je pense que e-kiwi pensait plutôt à se genre de permutation.
Code:
##FICHE ALBUM
RewriteRule ^mp3/([0-9]*)-(.*)_([0-9]*)-([0-9]*)\.html$ /mp3/index.php?nomalbum=$2&st=$1&ss=$3al=$4 [L]

##STYLE ET SOUS STYLE
RewriteRule ^mp3/([^-]+)-(.*)_([0-9]*)_([0-9]*)\.html$ /mp3/index.php?st=$3&ss=$4&nom=$1&ssnom=$2 [L] 

##STYLE
RewriteRule ^mp3/(.*)-([0-9]*)\.html$ /mp3/index.php?st=$2&nom=$1 [L]

-Magic-
 
WRInaute occasionnel
Tu dis que ta variable nom contient des tirets, mais dans la règle suivante, tu n'auras jamais les tirets :
Code:
##STYLE ET SOUS STYLE
RewriteRule ^mp3/([^-]+)-(.*)_([0-9]*)_([0-9]*)\.html$ /mp3/index.php?st=$3&ss=$4&nom=$1&ssnom=$2 [L]

Je pense que tu peux t'en sortir ainsi :
Code:
#FICHE ALBUM
RewriteRule ^mp3/([0-9]+)-(.+)_([0-9]+)-([0-9]+)\.html$ /mp3/index.php?nomalbum=$2&st=$1&ss=$3al=$4 [L]

##STYLE ET SOUS STYLE
RewriteRule ^mp3/(.+)-([^-]+)_([0-9]+)_([0-9]+)\.html$ /mp3/index.php?st=$3&ss=$4&nom=$1&ssnom=$2 [L]

##STYLE
RewriteRule ^mp3/(.+)-([0-9]+)\.html$ /mp3/index.php?st=$2&nom=$1 [L]

J'ai interverti dans la 2eme règle le [^-] car c'est ton ssnom qui n'a pas de tirets, pas le nom.

J'ai remplacé aussi les * par des +, car tu as toujours au moins un caractères, tu ne veux pas matcher du vide si je comprends bien.
 
WRInaute impliqué
Code:
##STYLE
RewriteRule ^mp3/([\-a-z]+)-([0-9]*)\.html$ /mp3/index.php?st=$2&nom=$1 [L]

##STYLE ET SOUS STYLE
RewriteRule ^mp3/([\-a-z]+)-([,a-z]+)_([0-9]*)_([0-9]*)\.html$ /mp3/index.php?st=$3&ss=$4&nom=$1&ssnom=$2 [L]

#FICHE ALBUM
RewriteRule ^mp3/([0-9]*)-([,a-z])_([0-9]*)-([0-9]*)\.html$ /mp3/index.php?nomalbum=$2&st=$1&ss=$3al=$4 [L]

Et comme ça?
 
Discussions similaires
Haut