Aller au contenu

Problème avec un point d'interrogation dans une règle


Sujets conseillés

Bonjour à tous,

Je cesse de m'escrimer et je vous demande conseils, car malgré mes recherches, je me retrouve dans l'impasse.

Je souhaite réaliser la chose suivante :

1 : document.htm ==> document.php?id=x

2 : document.htm?variable=y&variabley=z&... ==> document.php?id=x&variable=y&variabley=z&...

Je cherche à faire cela en une seule règle (ce sont des règles écrites par un script PHP dans le .htaccess)

Actuellement, j'ai pensé à :

RewriteRule ^document.htm(\??)([[:graph:]]*)$ /document.php?id=x&$2 [L]

Qui ne marche que dans le premier cas, ou qui marche si je ne met pas le ? dans le deuxième cas (document.htmvariable=y&variabley=z&... ).

Pour essayer de comprendre, j'ai essayé :

RewriteRule ^document.htm([-?]?)([[:graph:]]*)$ /document.php?id=x&$2 [L]

Qui marche dans le premier cas, qui marche dans le second si à la place du ? je met un - (document.htm-variable=y&variabley=z&...). Ce que je ne comprend pas car pour moi, dans les crochets, le ? a bien le comportement d'un caractère normal il me semble ...

Ca se trouve, ce n'est pas possible de récupérer les vrais paramètres de l'url pour les réécrire en fait ... Vous allez me dire, c'est en effet idiot de laisser des paramètres dans l'url lorsque justement on fait de la réécriture d'URL, mais en fait ce sont des variables des débugs que j'ai besoin de mettre de cette manière.

Aurriez vous une recette magique ?

Modifié par captain_torche
Lien vers le commentaire
Partager sur d’autres sites

En insistant sur google et en variant les mots clés de la recherce, j'ai trouvé !

C'était un problème de flag : en rajoutant le flag QSA, les paramètres de l'URL sont conservés.

Ce qui donne tout simplement la règle suivante :

RewriteRule ^document.htm$ /document.php?id=x [QSA,L]

Modifié par Xtouch
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...