Eviter que les "rewriteRule" transforment les caractères accentués

url-esc.jpgSur un mutu OVH [1]avec ça dans le .htaccess:

SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

l'adresse:

http://www.unSite.fr/index.php?post/Plan-d-accès

devient:

https://www.unSite.fr/index.php?post/Plan-d-acc%C3%A8s

Et paf, page 404

La solution est simple, il suffit d'ajouter le flag NE (no escape) dans la rewriteRule. comme ceci:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301]

Voila, les caractères accentués ne sont plus "percent-encoded" suite à leur passage dans la regex.

L'illustration a été empruntée sur le site de Joe Dog Software

Note

[1] Je viens de découvrir qu'OVH propose la mise en place d'un certificat SSL sur ses mutualisés (cher quand même: 59,99 € TTC pour un certificat basique). J'ai donc passé un dotclear en https (pas ce blog, lui est sur un dédié chez online).

Page top