RewriteRule et point d'interrogation

Nouveau WRInaute
Bonjours à tous,

j'ai un formulaire pour faire une recherche :

<form action="recherche.php" method="post">
<input type="text" name="search" />
</form>

Je veux que l'url soit la suivante après qu'un utilisateur ait fait une recherche :

http://www.monsite.com/recherche-mots+tappés+par+lutilisateur.html

Pour cela, au tout début de la page recherche.php j'écris le code suivant:

<?php
if (isset($_POST['search']))
{
$blop = trim($_POST['search']); //je récupère ce qui a été tappé dans $blop

$blip = str_replace(' ', '+', $blop); //je rempace les espace entre les mots par des +

header('Location: recherche-' . $blip . '.html'); //je fais la redirection vers une url propre et contenant les mots tappés
}
?>


Maintenant le code présent dans le .htaccess :

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^recherche-(.*)\.html$ /recherche.php?search=$1 [L]

Voilà. Ceci marche très bien, les mots sont correctement séparé par des + , et tout ce passe bien...
Sauf quand je tape un point d'interrogation dans la recherche.
En effet, en tapant uniquement un '?' dans mon formulaire de recherche, l'url lisible dans la barre d'adresse du navigateur est bien : http://www.monsite.com/recherche-?.html.
Cependant, une erreur 404 s'affiche en me disant que le fichier http://www.monsite.com/recherche- n'a pas été trouvé.

Voilà, je souhaiterai tout simplement pouvoir rentrer n'importe quel caractère dans le formulaire.
 
WRInaute accro
Ne faut il pas l'échapper ?

Sinon, y a t il un intérêt à autoriser le point d'interrogation dans une recherche ,
 
Nouveau WRInaute
L'intérêt est que la barre de recherche est censé me trouver des articles que j'aurai rédigés.

Donc si un utilisateur fait un copier/coller du titre d'un article contenant un ' ? ' et lance une recherche ...
... le ? étant présent, ça me déclenchera le bug .

En ce qui concerne l'échappement,
j'ai bien essayer de faire la chose suivante :

(...)
$blip = str_replace('? ', '\?', $blop); //je rempace les points d'interogations par des des points d'interrogation précédé d'un antislash permettant l'echappement.
(...)

Mais cela ne fonctionne fonctionne pas
 
Nouveau WRInaute
Oui merci Jean-Luc.

En attendant des réponses, j'ai tapé sur google "hello ?".

et le résultat dans l'url était le suivant : ...hello+%3F...

Donc la solution serait de remplacer tous les caractères spéciaux susceptibles de faire planter par d'autres caractères qui ne font pas planter et dont je suis certain qu'ils ne seront jamais présents dans mes titres.

Ainsi, vu que mon script de recherche fait en sorte de sortir les titres qui ont au moins un des mots-clés tapés dans la barre de recherche, j'y trouverai mon compte.
 
Discussions similaires
Haut