2 RewriteRule presque pareil > conflit sur la destination

WRInaute discret
Bonjour, je débute en url rewriting, j'ai cherché une solution à mon pb mais je ne vois pas trop à quoi chercher.

J'ai entre autre ses 2 regles dans mon htaccess..

Code:
RewriteEngine on

# metier-12.html	// accueil
RewriteRule ^([[:alpha:]-]+)-([[:digit:]]+)\.html$  index.php?metier=$2 

# herault-34.html
RewriteRule ^departement-([[:alnum:]]+)\.html$  villes.php?dep=$1

Le pb, c que des que je choisi un département, ca me redirige sur la page des metiers comme si je l'avais solicité..

Bref je sais pas comment gérer ce conflit, merci d'avance..
 
WRInaute accro
Bonjour, essaye ceci :

Code:
RewriteEngine on

# herault-34.html
RewriteRule ^departement-([[:alnum:]]+)\.html$  villes.php?dep=$1 [L] 

# metier-12.html   // accueil
RewriteRule ^([[:alpha:]-]+)-([[:digit:]]+)\.html$  index.php?metier=$2

Le code [L] indique que si ce type de construction est décelé, aucune autre règle ne sera appliquée. Il faut donc placer en premier la règle la plus précise.

Mais je ne suis pas sur de bien voir ce que tu veux obtenir comme URL ...

Si tu veux faire apparaître le nom du departement dans l'URL, il faudra aussi le passer en paramètres.

Et tu ne pourras pas faire deux traitements différents departement-numero et metier-numero, la structure des URL étant la même.
 
WRInaute discret
nickargall a dit:
Bonjour, essaye ceci :

Code:
RewriteEngine on

# herault-34.html
RewriteRule ^departement-([[:alnum:]]+)\.html$  villes.php?dep=$1 [L] 

# metier-12.html   // accueil
RewriteRule ^([[:alpha:]-]+)-([[:digit:]]+)\.html$  index.php?metier=$2

Le code [L] indique que si ce type de construction est décelé, aucune autre règle ne sera appliquée. Il faut donc placer en premier la règle la plus précise.

J'avais lu que il devai etre en dernier, pour conclure toutes tes regles, je peux donc le mettre en premier ?
 
WRInaute accro
Oui bien sur, il signifie " hop c'est bon j'ai appliqué cette règle, hop j'en applique pas d'autre"
 
WRInaute accro
il suffit d inverser les 2 regles, vu que le htaccess est executé de haut en bas

par contre herault-34.html ne sera jamais redirigé par :
RewriteRule ^departement-([[:alnum:]]+)\.html$ villes.php?dep=$1
 
WRInaute accro
e-kiwi a dit:
il suffit d inverser les 2 regles, vu que le htaccess est executé de haut en bas

par contre herault-34.html ne sera jamais redirigé par :
RewriteRule ^departement-([[:alnum:]]+)\.html$ villes.php?dep=$1

Ca c'est archi sur.
 
Discussions similaires
Haut