rewriting de sous dossiers besoin d'aide

WRInaute discret
Bonjour

j'ai besoin d'aide pour la réécriture d'url de mon site

dans mon cas je dois passer 1, 2, 3, 4, 5 variables.

Première question, est ce que je dois construire les règles pour chaque cas ?

par exemple
cas N° 1, une variable, suivie potentiellement d'un chiffre :

URL :
category/toto/
category/toto/1

REGLE :
RewriteRule ^category1/(.+)/$ listecat.php?rew=$1 [L]
RewriteRule ^category1/(.+)/([0-9]+)$ listecat.php?rew=$1 [L]

Cas N°2 : Une sous categorie, (y'a une variante)

URL :
category/toto/titi (pas de /)
category/toto/titi/2

REGLE :

RewriteRule ^category1/(.+)/(.+)$ listecat.php?rew=$1&rew2=$2 [L]
RewriteRule ^category1/(.+)/(.+)/([0-9]+)$ listecat.php?rew=$1&rew2=$2 &p=$3 [L]

Dans cette règle lorsque j'ai l'url :
category/toto/titi/2
je rencontre le problème suivant : la variable $_GET[rew] contient "toto/titi", au lien de "toto" pour "$_GET[rew]" et "titi" pour "$_GET[rew2].

Ensuite je descends dans le même principe de 2 niveau en construisant la réécriture de la même facon, ce qui donne pour le 4 eme niveau.


URL :
category/toto/titi/niveau3/niveau4 (pas de /)
category/toto/titi/niveau3/niveau4/2

REGLE :

RewriteRule ^category1/(.+)/(.+)/(.+)/(.+)$ listecat.php?rew=$1&rew2=$2&rew3=$3&rew4=$4 [L]
RewriteRule ^category1/(.+)/(.+)/(.+)/(.+)/([0-9]+)$ listecat.php?rew=$1&rew2=$2&rew3=$3&rew4=$4&p=$3 [L]

et idem ca ne fonctionne pas, les variables se concatènes dans la première.

Vous avez une idée ?
N'y a t il pas plus simple ?

Merci pour tout !
 
WRInaute accro
en fait, tes règles doivent être écrites en sens inverse : les plus larges doivent se retrouver plus bas.
Sinon, remplace (.+) par ([^/+)
 
WRInaute discret
Bonsoir Leonick

tu as raison c'est trop vague ! j'ai donc restreins la regle mais je n'arrive pas à récupérer la 3 eme valeur :
Code:
RewriteRule ^category1/$  listecat.php [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/$  listecat.php?rew=$1 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([0-9]+)$  listecat.php?rew=$1&p=$2 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)  listecat.php?rew=$1&rew2=$2 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$  listecat?rew=$1&rew2=$2 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([0-9]+)$  listecat.php?rew=$1&rew2=$2&p=$3 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)$  listecat.php?rew=$1&rew2=$2&rew3=$3 [L]

en effet la 3 eme variable peut etre $P ou $rew3
dans tous les cas si je desactive l'une des deux dernieres je n'arrive pas à afficher la règle ...

une idée ?

Merci
 
WRInaute accro
essaie déjà règle par règle, en commentant les autres règles.
Histoire de valider chacune.
Ensuite, tu verras le problème qui peut se poser avec plusieurs règles en même temps
 
WRInaute discret
Bonjour Leonick

en effectuant le test que tu m'as proposé ce qui ressort c'est ces deux règles :

RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+) listecat.php?rew=$1&rew2=$2 [L]
RewriteRule ^category1/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([0-9]+)$ listecat.php?rew=$1&rew2=$2&p=$3 [L]

La première lorsqu'elle est activée ne permet pas la récupération de la variable $_get[p]

ce n'est pas un comportement normal non ?
 
WRInaute discret
Ha ouais bien joué !

c'étais ca .... on vite fait de s'y perdre quand même au milieu de tout ca !!

merci beaucoup.
 
Discussions similaires
Haut