8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je mets en place l'url rewriting sur mon site, je ne rencontre pas de problèmes particuliers, sauf pour les caractères spéciaux, du genre : ? # /, etc.

Je m'explique, j'avais des pages du style
www.monsite.fr?type_recherche=origine&textfield=NOM

que je réécris
www.monsite.fr/origine/NOM.html


ma règle est donc :
RewriteRule /origine/(.*)\.html$  www.monsite.fr?type_recherche=origine&textfield=NOM  [L] 


Une erreur 404 apparaît si NOM contient un caractère spécial.
Les variables NOM sont stockées en BD et sont des chaînes avec toute sorte de caractères.
Comment dois-je réécrire ma règle pour réussir à faire accepter les dièses et point d'interrogation?
Quelqu'un a une idée? j'ai essayer d'échapper les caratères, mais ça ne marche pas.
je ne connais pas grande chose sur les expressions régulières et c'est difficile d'avoir des réponses pertinentes quand je recherche :
RewriteRule "caractères spéciaux" # ?
sur les moteurs.

Merci
alain
en fait ma question est :
par quoi remplacer le

/(.*)/ du RewriteRule

pour prendre en compte les ? et # et autres...

du genre

RewriteRule /([a-zA-Z0-9\?\")+/...
Bonsoir,

le problème c'est que les ? et # ont une signification dans une url. Il faut les encoder sous la forme %xx pour les passer sans interprétation.
ça veut dire qu'il n'y a pas de solution au niveau du .htaccess avec un RewriteCond ou autre?
Il faut que j'encode tous les caractères spéciaux directement dans la base de données?

merci pour la réponse en tout cas.
Je penses en effet que c'est le cas, je ne penses pas que l'on puisse demander à Apache d'ignorer les caractères spéciaux d'une URL.