Aller au contenu

problème rewriting avec caractères + (escape)


Sujets conseillés

Bonjour,

J'ai un petit souci, j'ai une règle toute simple du style :

RewriteRule ^cat/(.*)$ index.php?cat=$1 [QSA]

mais un problème se passe lorsque je veux accéder à la catégorie toto+tata

donc, c'est la page cat/toto%2Btata (le %2B est le code du +)

mais elle est redirigé vers index.php?cat=toto+tata ( et donc, dans mon code, elle est interprété comme "toto tata")

Y'a t'il un moyen pour que apache ne remplace par les %xx par leur équivalent lors de la réécriture ?

merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Si quelqu'un a la solution, je suis toujours preneur, j'ai décidé de contourner le problème.

Avec un petit script php en haut de mon index.php comme $_SERVER['REQUEST_URI'] contient la bonne valeur :

if (isset($_GET['cat'])){ // apache a déjà fait le rewrite
$tmp=array();
preg_match('@/cat/([^\?]*)@',$_SERVER['REQUEST_URI'],$tmp); //on refait l'expression régulière
if (count($tmp)>1){ // il est logiquement toujours trouvé
$_GET['tags'] = rawurldecode($tmp[1]); // on met la bonne valeur cette fois ci
}
}

Lien vers le commentaire
Partager sur d’autres sites

Tu ne peux pas éviter à Apache d'interpréter les URLs, et cela reste valable pour les caractères spéciaux (y compris les caractères accentués).

C'est donc effectivement dans ton script que tu dois les traiter ;)

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...