Rewriting sous forme de dossier avec dossier identique

WRInaute discret
Bonjour

Voila un truc que je comprends pas , j'ai un dossier a la base de mon site MONDOSSIER , dedans 3 fichiers PHP , f1.php,f2.php,f3.php .
Je veux réécrire les urls du type

monsite.fr/MONDOSSIER/f1.php?var1=$1
monsite.fr/MONDOFFIER/f2.php?var1=$1&var2=$2&var3=$3
monsite.fr/MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5

en respectivement :

monsite.fr/MONDOSSIER/var1/
monsite.fr/MONDOSSIER/var1/var2/var3/
monsite.fr/MONDOSSIER/var1/var2/var3/var4/var5/

Ca fonctionne bien pour la premiere URL mais pas pour les autres voici mon super code qui marche pas :

RewriteEngine on
RewriteRule ^.*MONDOSSIER/(.*)/$ /MONDOSSIER/f1.php?var1=$1
RewriteRule ^.*MONDOSSIER/(.*)/(.*)/(.*)/$ /MONDOSSIER/f2.php?var1=$1&var2=$2&var3=$3
RewriteRule ^.*MONDOSSIER/(.*)/(.*)/(.*)/(.*)/(.*)/$ /MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5


En fait il réécrit seulement la premiere URL correctement et les autres il ne veut pas , a quoi est ce du ? au fait que le nom de dossier soit identiques pour les 3 regles ?
parcque si je change le nom de dossier pour chaque regle ca fonctionne ... mais je veux pas comme ca ...

Si quelqu'un sait .... merci
 
WRInaute discret
Je me réponds a moi meme voici la solution qui fonctionne .
Ne me demandez pas pk je n'en sais rien mais ca marche en tt cas .
J'aimerai quand meme bien comprendre ...


RewriteEngine on
RewriteRule ^.*MONDOSSIER/(.*)/(.*)/(.*)/(.*)/(.*)/$ /MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5
RewriteRule ^.*MONDOSSIER/(.*)/(.*)/(.*)/$ /MONDOSSIER/f2.php?var1=$1&var2=$2&var3=$3
RewriteRule ^.*MONDOSSIER/(.*)/$ /MONDOSSIER/f1.php?var1=$1
 
WRInaute discret
dans l'expression (.*) le point indique n'importe quel caractere y compris le / donc comme tu voulais le faire il aurait fallut l'exclure de l'expression
 
WRInaute discret
Cad ?

Un truc du style :

RewriteRule ^.*MONDOSSIER/(*)/(*)/(*)/(*)/(*)/$ /MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5


Ca fonctionnerait ce genre de truc ?
 
WRInaute accro
la réponse que tu souhaite : il execute tes regles de haut en bas, donc si tu as une regle plus générale situé au dessus d une specifique, la spécifique n'est pas utilisé.
 
WRInaute discret
C'est bien ce que je me disais , en inversant l'ordre ca fonctionne donc .
MAIS EST ce bien raisonnable de procéder comme je fais niveau moteurs ? ressources ?
 
WRInaute accro
Niveau moteur, la façon dont tu as fait l'URLR ne change rien.
Par contre, 6 sous-dossiers c'est peut être un peu trop, mais il faudrait savoir sur quoi c'est utilisé pour en dire plus

Niveau ressources, je ne sais pas trop, je pense que c'est bon ^^ (par contre, on m'a dit que c'était mieux de tout mettre directement dans la conf, en évitant les .htaccess).
 
WRInaute occasionnel
Bon, tu as résolu ton pb, mais histoire de marquer le coup :

En règle général, il faut éviter le .* qui a tendance à en prendre plus que l'on ne le voudrait (ex: dans ton cas, il prenait 'var1/var2/var3/var4/var5/' comme une seule variable et tu ne t'en doutait pas).

Le mieux est de limiter au maximum la règle.
Ex: tu sais que tes variables ne sont composées (par exemple, hein, c'est peut-etre pas ton cas) que de lettres et de chiffres, et bien autant écrire :
([a-zA-Z0-9]+)
ça évite bien des surprises
 
WRInaute discret
max6 a dit:
RewriteRule ^.*MONDOSSIER/(*)/(*)/(*)/(*)/(*)/$ /MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5
Ca aurait été plutot comme ca (mais je suis pas bien sur):
RewriteRule ^MONDOSSIER/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /MONDOSSIER/f3.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5
 
WRInaute discret
Oui voila 6 sous dossiers c'est a ce niveau que je m'interroge le plus .
Disons que les noms des dossiers changent tous les temps , il y a environ 250 000 pages qui seront écrites de cette manière donc ca changera forcement , de meme que le nom du dossier source MONDOSSIER qui changera 8 fois exactement de cette maniere :

MONDOSSIER1/var1/
MONDOSSIER1/var1/var2/var3/
MONDOSSIER1/var1/var2/var3/var4/var5/var6/

MONDOSSIER 2/var1/
etc jusque MONDOSSIER8

En tout environ 250 000 pages .

Donc c'est vrai que ca n'est pas simple de prévoir la réaction des moteurs a ce niveau .

Il faudra ajouter a ca un 7eme dossier qui viendra tout a la fin que je pense terminer par .html mais je m'interroge encore ...

A savoir aussi que les noms des dossiers vont de 4 a 50 lettres ... on peut pas faire n'importe comment ...
 
WRInaute passionné
A la place de * tu peux mettre par exemple [A-a0-9-] si tu sais quel type de caractere tu auras.

François
 
WRInaute discret
Le soucis c'est que j'aurai du 0-9 et du a-z mais aussi du - et les - viennent seulement parfois pas tout le tps .
 
Discussions similaires
Haut