web-dev-qa-db-fra.com

Comment pourrais-je rendre Apache insensible à la casse en utilisant .htaccess?

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?

16
user1397143

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.

ne pas oublier de changer

AllowOverride none

à

AllowOverride All

dans votre fichier httpd.conf, pour permettre aux fichiers .htaccess de fonctionner correctement.

13
iEmad

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.

0
Donald Duck