Php, get et rewriting ?

Eléphanteau du PHP | 30 Messages

05 févr. 2009, 23:46

Bonjour, :)

désolé de refaire un topic, mais j'aurais une nouvelle fois besoin d'avis. Je rencontre un problème avec mon rewriting et l'interprétation de certaines variables php supplémentaire au rewriting. Je m'explique.


J'ai en effet une page sous cette forme :
http://www.monsite.com/page.php?test=variable

qui est réécrit comme suit :
http://www.monsite.com/page/variable/

et je souhaiterais que cette page puissse interpréter certaine variable GET supplémentaire sur quelques pages, par exemple :
http://www.monsite.com/page/variable/?t ... revariable


Mais lorsque je lance cette page, elle n'interprête pas ce qui est après la réécriture :
?testbis=autrevariable

Alors que cette page marche parfaitement pour information :
http://www.monsite.com/page.php?test=va ... revariable


Donc c'est bien un problème avec la relation rewriting et variable GET derrière... Mais pourquoi celà ne marche-t-il pas ? Quelqu'un a une idée ou peut m'aider à ce sujet ?

Merci de votre aide. Cordialement,

karty :wink:

ViPHP
ViPHP | 5924 Messages

06 févr. 2009, 00:54

Note de vocabulaire. C'est http://www.monsite.com/page/variable/ qui est réécrit en http://www.monsite.com/page.php?test=variable et non le contraire…

Eléphanteau du PHP | 30 Messages

06 févr. 2009, 01:06

C'est juste ! :D

Mais sinon est-ce normale de ne pas récupérer les variables GET sur un rewriting ?

Ex. avec un $_GET['testbis'] ici :
http://www.monsite.com/page/variable/?t ... revariable

Existe-t-il un moyen pour les récupérer ou dans quels cas celà ne fonctionnerait-il pas ? Peux-tu m'aider à ce sujet, car au-delà du vocabulaire, c'est ce qui me pose aussi problème lol ! :P

Merci a+

ViPHP
ViPHP | 5924 Messages

06 févr. 2009, 02:08

Ouais, ya un truc avec le query_string dans apache. Je n'avais pas cherché longtemps, mais regarde tu côté du tag [QSA]…

Eléphanteau du PHP | 30 Messages

06 févr. 2009, 10:43

J'aurais du le préciser, mais mon URL est réécrite comme ceci dans mon htacess :
RewriteRule ^page/([^/]+)/$ page.php?test=$1 [QSA,L,R=301]
et le tag [L] ou [QSA] ne change rien au problème... Ma page n'interprête pas la variable. Je ne comprends pas pourquoi ? Une idée ? :(

Mammouth du PHP | 2937 Messages

06 févr. 2009, 13:34

As-tu bien pris soin d'insérer, avant les règles de réécriture, la ligne suivante :

Code : Tout sélectionner

RewriteEngine on
?

Et, avant tout, t'es-tu assuré que le mod_rewrite d'Apache était bien activé chez ton hébergeur ? ;)

Eléphanteau du PHP | 30 Messages

06 févr. 2009, 15:12

Oui la réécriture marche parfaitement, tout est activé... Mais ce sont les variables supplémentaires qui ne sont pas interprété :

http://wwww.monsite.com/mapage/mavariab ... lementaire

:cry:

Mammouth du PHP | 2937 Messages

06 févr. 2009, 15:43

Oui la réécriture marche parfaitement, tout est activé... Mais ce sont les variables supplémentaires qui ne sont pas interprété :

http://wwww.monsite.com/mapage/mavariab ... lementaire

:cry:
Avec ta règle de réécriture actuelle :

Code : Tout sélectionner

RewriteRule ^page/([^/]+)/$ page.php?test=$1 [QSA,L,R=301]
c'est normal, puisque l'expression régulière exclut tout / entre "page/" et le / final.

Il faudrait une règle supplémentaire pour tenir compte de la présence de deux variables.

Code : Tout sélectionner

RewriteRule ^page/([^/]+)/([^/]+)/$ page.php?test=$1&truc=$2 [QSA,L,R=301]
Règle à adapter selon la forme des URLs à paramètres dont tu disposes.

Eléphanteau du PHP | 30 Messages

06 févr. 2009, 20:41

Mais justement ce sont des variables supplémentaires, non-adaptables et non-générales. Une variable GET pour récupérer des stats ici et là, etc... pas de redirection définie. Il n'y a aucune autre solution ?

Eléphant du PHP | 79 Messages

09 févr. 2009, 14:21

Tu peux essayer quelque chose :

Code : Tout sélectionner

RewriteCond %{QUERY_STRING} truc=(.*) RewriteRule ^page/([^/]+)/$ page.php?test=$1&truc=%1 [L]
Cela te permet de récupérer les paramètres après le ?

Eléphanteau du PHP | 30 Messages

12 févr. 2009, 22:09

Merci du conseil, :wink: malheureusement ça ne convient pas à ce dont je recherche, mais ça peut être une bonne astuce pour d'autres...