Re-écriture d'adresses contenant un "+" ?

4
440BX
Guest
J'utilise mod_rewrite pour tranformer les adresses de type :

/action.php?clef=xxxx

en

/carte/xxxx.htm

La règle est la suivante :


RewriteRule ^carte/(.*)\.htm$ action.php?clef=$1

Lorsque je récupère ma variable xxxx depuis l'adresse non re-écrite (/action.php?clef=xxxx) j'ai aucun soucis. Par contre, avec l'adresse re-écrite (/carte/xxxx.htm) il y a un problème avec certains caractères (j'ai repéré le +, mais il y en a peut-être d'autres).

Si je veux récupérer $_GET['clef'] avec clef = char+ je vais uniquement avoir char

Le problème est le même en utilisant rawurlencode() pour afficher clef dans l'adresse (+ devient %2B mais il disparait toujours quand on le passe sur une adresse re-écrite). Une idée ?
 
WRInaute discret
Je pense que tu as le meme soucis que moi avec mon "%20" (cf mon post en dessous).

J'ai trouvé une solution qui est peu bricolo (re cf mon post en dessous); elle devrait pouvoir s'appliquer à ton cas mais j'espere que les experts sauront trouver une parade plus propre :)
 
4
440BX
Guest
Je pense que c'est un peu différent. Les variables qui contiennent des espaces (transformés logiquement en %20 par rawurlencode() donc) passent très bien chez moi. De même que les !, [, *, =, (, ) ...

Pour l'instant je n'ai repéré que ? et + parmi les caractères posant problème.
 
Discussions similaires
Haut