Je suis récemment passé de IIS à Apache et, malheureusement, certains de mes liens ont des problèmes de capitalisation. J'ai vu pas mal de gens parler de la réécriture des URL en minuscules ou en majuscules, mais j'ai besoin de quelque chose pour rendre Apache insensible à la casse. Est-ce faisable avec .htaccess?
ajouter
CheckSpelling on
dans votre fichier .htaccess
bien sûr après avoir activé le RewriteEngine
donc le code final sera
RewriteEngine on
CheckSpelling on
Je suppose que c'est le meilleur moyen et le plus sûr.
AllowOverride none
AllowOverride All
dans votre fichier httpd.conf
, pour permettre aux fichiers .htaccess de fonctionner correctement.
Si CheckSpelling
ne fonctionne pas pour vous et que vous utilisez PHP, vous pouvez ajouter une redirection PHP dans votre page 404 pour la redirection vers la version minuscule de l'URL. Pour commencer, si vous ne l'avez pas déjà fait, ajoutez le code suivant à votre fichier .htaccess (vous pouvez appeler le fichier autrement que 404.php si vous le souhaitez, mais il doit s'agir d'un fichier PHP) :
ErrorDocument 404 /404.php
Ajoutez ensuite le code suivant au début de 404.php (si vous utilisez HTTPS, remplacez http://
par https://
à la deuxième ligne):
if(preg_match("/[A-Z]/", $_SERVER["REQUEST_URI"])){
header("location:http://" . $_SERVER["HTTP_Host"] . strtolower($_SERVER["REQUEST_URI"]));
exit();
}
Ce code utilise une expression rationnelle simple pour vérifier si l'URI demandé contient des lettres majuscules et, le cas échéant, il redirige vers la même page, mais avec des lettres minuscules.