Forum Programmation.web Problème avec mod_rewrite

Posté par  .
Étiquettes : aucune
0
17
juil.
2005
Bonjour
Au départ, mon problème était simple: je voulais rediriger http://localhost/lst/(une(...) chaine) vers http://localhost/test.php?rating=(une(...) chaine) où une chaîne peut contenir des lettres minuscules, des - et des +

J'ai donc fait un petit .htaccess avec:

RewriteEngine on
RewriteRule lst\/([a-z\-\+]+)\/*$ test.php?rating=$1 [L]


A première vue, ça fonctionne: http://localhost/lst/all(...) donne

_GET[rating] = all

_SERVER[REDIRECT_QUERY_STRING] = rating=all
_SERVER[REDIRECT_URL] = /lst/all
_SERVER[QUERY_STRING] = rating=all
_SERVER[REQUEST_URI] = /lst/all


(test.php ne fait pour le moment que me donner le contenu des variables $_GET et $_SERVER)

Mais dès que je mets un +, ça ne fonctionne plus: http://localhost/lst/k-k+(...) donne:

_GET[rating] = k-k

_SERVER[REDIRECT_QUERY_STRING] = rating=k-k+
_SERVER[REDIRECT_URL] = /lst/k-k+
_SERVER[REQUEST_METHOD] = GET
_SERVER[QUERY_STRING] = rating=k-k+
_SERVER[REQUEST_URI] = /lst/k-k%2b


En fait, mod_rewrite a changé le %2B en +, et + dans une URL, c'est un espace...

Quelqu'un a une idée pour changer ce comportement ? (autrement que RewriteMap qui ne marche pas dans les .htaccess, et appeler http://localhost/lst/k-k%252b)(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.