Probleme avec le %20

WRInaute discret
Bonjour.
J'ai suivi les conseils de l'excellent articledu site mais j'ai un petit soucis.

Dans ma regle de rewrite je suis amené à passer un parametre qui comprend des espaces (symbolisés par %20) dans l'url réécrite (membre de droite).

Concretement, la regle s'ecrit en gros comme ca :

RewriteRule ^report/newssuite-([0-9]+)-([0-9]+)\.html$ report/newssuite.php3?i=$1&mois=$2&rub=news%20rivieres [L]

Le soucis est que le %20 ne passe pas : le %2 est ignoré et seul le 0 de %20 est pris en compte. J'ai fait le test en ajoutant des %2 partout dans le membre de droite de la règle de rewrite et ces %2 ne sont jamais pris en compte.

Y a t il un moyen de contourner ca ?

Perso j'ai trouvé une feinte : passer "20" en argument supplémentaire dans l'url puis écrire %$3 dans l'url de droite. Le server interprete alors correctement en concatenant % et $3 (qui vaut 20) et tout fonctionne. Ceci dit c'est un peu de la bidouille et je pense qu'il y a moyen de faire ca plus proprement.
 
Olivier Duffez (admin)
Membre du personnel
faire ça + proprement consisterait sans doute déjà à supprimer les espaces dans tes variables à passer dans l'URL, tu ne penses pas ? pourquoi ne pas les remplacer par des tirets bas : _

ceci dit Dan va nous trouver une solution, j'en suis sûr !
 
WRInaute discret
WebRankInfo a dit:
faire ça + proprement consisterait sans doute déjà à supprimer les espaces dans tes variables à passer dans l'URL, tu ne penses pas ? pourquoi ne pas les remplacer par des tirets bas : _

J'y ai bien pensé mais les pages attendent ces parametres avec des espaces et les transmettre avec des _ par exemple oblige à remodifier encore un autre truc en aval ...

PS : desole d'avoir ouvert un nouveau fil de discussion, je n'avais pas pris le temps de regarder tous les topics, j'ai juste vu que %20 et %2 etait absent du forum et j'ai donc posté.
 
WRInaute passionné
WebRankInfo a dit:
faire ça + proprement consisterait sans doute déjà à supprimer les espaces dans tes variables à passer dans l'URL, tu ne penses pas ? pourquoi ne pas les remplacer par des tirets bas : _

ceci dit Dan va nous trouver une solution, j'en suis sûr !
Et en mettant un backslash devant le %20, à droite... comme dans \%20 ?

Dan
 
Nouveau WRInaute
nico__p a dit:
Bonjour.
J'ai suivi les conseils de l'excellent articledu site mais j'ai un petit soucis.

Dans ma regle de rewrite je suis amené à passer un parametre qui comprend des espaces (symbolisés par %20) dans l'url réécrite (membre de droite).

Concretement, la regle s'ecrit en gros comme ca :

RewriteRule ^report/newssuite-([0-9]+)-([0-9]+)\.html$ report/newssuite.php3?i=$1&mois=$2&rub=news%20rivieres [L]

Le soucis est que le %20 ne passe pas : le %2 est ignoré et seul le 0 de %20 est pris en compte. J'ai fait le test en ajoutant des %2 partout dans le membre de droite de la règle de rewrite et ces %2 ne sont jamais pris en compte.

Y a t il un moyen de contourner ca ?

Perso j'ai trouvé une feinte : passer "20" en argument supplémentaire dans l'url puis écrire %$3 dans l'url de droite. Le server interprete alors correctement en concatenant % et $3 (qui vaut 20) et tout fonctionne. Ceci dit c'est un peu de la bidouille et je pense qu'il y a moyen de faire ca plus proprement.
Essaie ça :
RewriteRule ^report/newssuite-([0-9]+)-([0-9]+)\.html$ "report/newssuite.php3?i=$1&mois=$2&rub=news rivieres" [L]
 
WRInaute discret
Merci Dan, le backslash fonctionne. J'aurais du y penser :)

La solution avec les guillemets ne fonctionne pas en revanche.
 
Discussions similaires
Haut