Comment créer des répertoires virtuels avec url rewriting ?

  • Auteur de la discussion Auteur de la discussion tryan
  • Date de début Date de début
WRInaute passionné
Bonjour,

Primo, je suis nul en rewriting ...(ça c'est dit).

Je m'arrache les tifs concernant une ou des règles d'url rewriting permettant de créer des répertoires virtuels . En gros je cherches a faire l'arborescence suivante : /blabla/categorie/region/departement/

J'ai fais beaucoup de testes dont voici le dernier qui n'est pas loin du résultat recherché :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule  ^blabla(.*)/(.*)/(.*)/(.*)$  page1.php?a=$1&b=$2&c=$3 [L]
RewriteRule  ^blabla(.*)/(.*)/(.*)$  page2.php?d=$1&e=$2 [L]
RewriteRule  ^blabla(.*)/(.*)$  page3.php?f=$1 [L]
RewriteRule  ^blabla(.*)$  page4.php?g=$1 [L]

Voici ce qui se passe quand je descend dans cette arborescence :

/blabla/categorie/region/departement/ -> ok, m'affiche departement
/blabla/categorie/region/departement -> ok, m'affiche departement
/blabla/categorie/region/ -> pas ok, m'affiche departement au lieu de region
/blabla/categorie/region -> ok, m'affiche region
/blabla/categorie/ -> pas ok, m'affiche region au lieu de categorie
/blabla/categorie ->ok, m'affiche categorie
/blabla/ -> pas ok, m'affiche categorie au lieu de blabla
/blabla -> ok, m'affiche blabla

Ce truc me gonfle sérieusement :? alors si vous avez de suggestions ...

Merci
 
Nouveau WRInaute
Solution rapide : remplacer le (.*) trop général par ([a-z-]*). A supposer que les termes inclus dans tes URLs contiennent uniquement des caractères alphabétiques en minuscules, et le tiret. Sinon, ce sera à adapter...

Pour le reste, il y a moyen de simplifier tes règles...
 
WRInaute passionné
Merci mais Non, ça ne fonctionne pas et les url contiennent uniquement des lettres minuscules et tirets.

J'ai trouvé une autre méthode qui fonctionne :
Code:
RewriteRule  ^blabla([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$  page1.php?a=$1&b=$2&c=$3 [L]
RewriteRule  ^blabla([^/]+)/([^/]+)/([^/]+)/?$  page2.php?d=$1&e=$2 [L]
RewriteRule  ^blabla([^/]+)/([^/]+)/?$  page3.php?f=$1 [L]
RewriteRule  ^blabla([^/]+)/?$  page4.php?g=$1 [L]

Cependant, j'ai besoin de dupliquer celle-ci en changeant juste le terme "blabla" par un autre :
Code:
RewriteRule  ^tutu([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$  page5.php?h=$1&i=$2&j=$3 [L]
RewriteRule  ^tutu([^/]+)/([^/]+)/([^/]+)/?$  page6.php?k=$1&l=$2 [L]
RewriteRule  ^tutu([^/]+)/([^/]+)/?$  page7.php?m=$1 [L]
RewriteRule  ^tutu([^/]+)/?$  page8.php?n=$1 [L]
... et forcément ..404 ..!

Les 4 premières règles fonctionnent mais pas les 4 suivantes, pourquoi ?
 
Discussions similaires
Haut