URL Rewriting et PHP

Nouveau WRInaute
Bonjour à tous,

J'ai URL Rewrité (nouveau verbe! :wink: ) mon site web. Donc j'envois en parametre une variable pour une page php donnée. Ensuite, je crée une deuxième règle de réécriture pour la meme page, et celle ci ne marche pas...

Exemple :

RewriteRule ^index-(.+)\.html$ /index.php?var1=$1 [L]
RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L]

Est-ce deja possible de créer deux règles pour une meme page php ou il faut obligatoirement créer une deuxième page pour la seconde règle ?
 
WRInaute impliqué
mikl194 a dit:
Est-ce deja possible de créer deux règles pour une meme page php ou il faut obligatoirement créer une deuxième page pour la seconde règle ?

Oui c'est possible, et dans ton cas, il faut que inverse tes 2 regles je pense.
 
WRInaute accro
dorian53 a dit:
Oui dans ce cas il faut inverser car les règles sont confuses.

Confuse... tu voulais dire logique je pense :

Comme une variable peut-être vide, le serveur ne tiens pas compte du nombre d'arguments et pointe sur la première réecriture disponible.
 
Nouveau WRInaute
Oui, c'est ok !! En inversant les variables ca marche nickel !
Merci


Par contre j'avais une autre petite question,
Est-ce qu'il est possible d'envoyé une variable à déja une page réécrite ?

Exemple:

Page réécrite : site-accueil.html
Page réécrite + var : site-accueil.html?var=1

Merci
 
WRInaute passionné
KOogar a dit:
dorian53 a dit:
Oui dans ce cas il faut inverser car les règles sont confuses.

Confuse... tu voulais dire logique je pense :

Comme une variable peut-être vide, le serveur ne tiens pas compte du nombre d'arguments et pointe sur la première réecriture disponible.

Non confuse, la 1ère règle capture tout avant la 2ème (qui est donc inutile dans ce sens).
 
WRInaute accro
Comme une variable peut-être vide, le serveur ne tiens pas compte du nombre d'arguments pour ne pas allouer de la mémoire inutilement et pointe sur la première réecriture disponible.

Cela ne te semble pas logique qu'un serveur cherche à économiser ses ressources ??


La règle :

Dans le fichier .htaccess, il faut placer les redirections en ordre décroissant par nombre d'arguments quand il s'agit du même fichier pointé.



dorian53 a dit:
KOogar a dit:
dorian53 a dit:
Oui dans ce cas il faut inverser car les règles sont confuses.

Confuse... tu voulais dire logique je pense :

Comme une variable peut-être vide, le serveur ne tiens pas compte du nombre d'arguments et pointe sur la première réecriture disponible.

Non confuse, la 1ère règle capture tout avant la 2ème (qui est donc inutile dans ce sens).
 
WRInaute passionné
KOogar a dit:
La règle :
Dans le fichier .htaccess, il faut placer les redirections en ordre décroissant par nombre d'arguments quand il s'agit du même fichier pointé.
C'est ce qu'on dit depuis le début avec bgdc, regarde son premier post et dis-moi si la règle est respectée... (j'ai rien compris à ton intervention) :roll:

Ces règles sont confuses, car la 1ère n'est pas assez précise, son .* empêche la seconde règle d'exister, s'il aurait pu la faire plus précise (donc moins confuse) pas de soucis.

Exemple, ce cas peut-être juste.
Code:
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]
RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L]

De tout façon, on est d'accord depuis le début.
 
WRInaute accro
dorian53 a dit:
Exemple, ce cas peut-être juste.
Code:
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]
RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L]

si tu pointes une url du type :
index-10-20.html
il pointera sur la premiere redirection :
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]

et ne prendra pas en compte le second argument. Ton code sera mal interpreté.

faite le test :wink:

L'ecriture correct :
Code:
RewriteRule ^index-(.+)-(.+)-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2&var3=$3&var4=$s4 [L]
RewriteRule ^index-(.+)-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L] 
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]
 
WRInaute passionné
KOogar a dit:
si tu pointes une url du type :
index-10-20.html
il pointera sur la premiere redirection :
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]

et ne prendra pas en compte le second argument. Ton code sera mal interpreté.

Non je ne crois pas, ce masque [0-9] indique des numériques et non pas le tiret.
 
WRInaute accro
La règle reste la même quelque soit les REGEXs.
Tu l'as trouve confuse car tu ne l'as pas comprise.
Allume ton serveur et fait des tests STP. Merci.

Enjoy life ;- )
KOogar
 
WRInaute passionné
KOogar a dit:
La règle reste la même quelque soit les REGEXs.
Tu l'as trouve confuse car tu ne l'as pas comprise.
Allume ton serveur et fait des tests STP. Merci.

Enjoy life ;- )
KOogar
KOogar a dit:
si tu pointes une url du type :
index-10-20.html
il pointera sur la premiere redirection :
RewriteRule ^index-([0-9]+)\.html$ /index.php?var1=$1 [L]

et ne prendra pas en compte le second argument. Ton code sera mal interpreté.
Si ce qui tu mets là fonctionne, explique-moi comment tu fais s'il te plait ?
Sinon, je crois qu'il te manque un tiret...


dorian53 a dit:
Non je ne crois pas, ce masque [0-9] indique des numériques et non pas le tiret.
Avec ça [0-9-] c'est mieux.
 
Nouveau WRInaute
Ca part dans tous les sens la ! Vous énervez pas les gars !

Donc je le disais, confus ou pas, ca marche tres bien comme ca :

RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L]
RewriteRule ^index-(.+)\.html$ /index.php?var1=$1 [L]


Par contre j'avais une autre petite question,
Est-ce qu'il est possible d'envoyé une variable à déja une page réécrite ?

Exemple:

Page réécrite : site-accueil.html
Page réécrite + var : site-accueil.html?var=1


Et, le [0-9] marche, peut etre mieux comme ca le [0-9-], mais en meme temps qu'est-ce qui est mieux entre quelque chose qui marche et quelque chose qui marche ?

Par contre le tiret entre le 0 et le 9 n'a rien à voir avec celui de la barre d'adresse, c'est simplement pour lui signaler que c'est du numérique...
 
WRInaute passionné
mikl194 a dit:
Ca part dans tous les sens la ! Vous énervez pas les gars !
Moi j'suis Zen et j'emploie le conditionnel plus haut, au cas où, hein on sait jamais (...) Voir...


mikl194 a dit:
Donc je le disais, confus ou pas, ca marche tres bien comme ca :

RewriteRule ^index-(.+)-(.+)\.html$ /index.php?var1=$1&var2=$2 [L]
RewriteRule ^index-(.+)\.html$ /index.php?var1=$1 [L]
Evidement que ça marche :) Voir...


mikl194 a dit:
Et, le [0-9] marche, peut etre mieux comme ca le [0-9-], mais en meme temps qu'est-ce qui est mieux entre quelque chose qui marche et quelque chose qui marche ?
Le plus optimisé, le plus performant.

mikl194 a dit:
Par contre le tiret entre le 0 et le 9 n'a rien à voir avec celui de la barre d'adresse, c'est simplement pour lui signaler que c'est du numérique...
Tout à fait ! Toi tu as compris. Voir...

mikl194 a dit:
Par contre j'avais une autre petite question,
Est-ce qu'il est possible d'envoyé une variable à déja une page réécrite ?
Tu ne mets pas [L] à la fin de ta règle pour continuer la ré-écriture.
 
Discussions similaires
Haut