URL sensibles à la casse – comment les rendre insensibles?

J’ai du mal avec mod_rewrite et .htaccess … Tout ce que j’ai à faire est de rendre mon cas sensible aux URL. Après quelques 500 erreurs de serveur internes et beaucoup de googler beaucoup de stack débordant je cherche juste une solution de travail.

Ne fonctionne PAS : Convertissez en minuscule dans une règle mod_rewrite

RewriteMap tolower int:tolower RewriteRule ^([^/]+)/?$ somedir/${tolower:$1} 

NE fonctionne PAS : URL insensibles à la casse avec mod_rewrite

 CheckSpelling on 

Tout ce dont j’ai besoin, ce sont des URL simples, non sensibles à la casse 🙂

Les éléments suivants devraient fonctionner:

   RewriteEngine on rewritemap lowercase int:tolower RewriteCond $1 [AZ] RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]  

Si non, pouvez-vous décrire ce qui ne fonctionne pas sur les solutions proposées?

Ce qui précède ne fonctionne pas, mais ce qui suit. Jouez avec sur http://www.chassis-plans.com/off-the-shelf-indussortingal-pc.html . Modifiez le cas dans l’URL et le code le changera en cas approprié et affichera la page. Si vous insérez une URL inexistante (www.chassis-plans.com/x), la page 404 personnalisée s’affiche.

Tout d’abord, ajoutez ce qui suit à votre fichier .htaccess où /forwarding-site-nocase.html est mon URL de page 404 personnalisée.

 AddType application/x-httpd-php .html .htm ErrorDocument 404 /forwarding-site-nocase.html 

Puis, tout en haut de votre page 404 personnalisée, à partir de la ligne 1, ajoutez ce qui suit. Si vous avez une ligne vide en premier, cela échoue.

  

Vous pouvez maintenant suivre cela avec votre code HTML standard pour votre page 404 personnalisée, par exemple:

        

et ainsi de suite pour le rest de la page.

J’ai eu des problèmes avec IE, probablement le cache, lors du développement et des tests, mais cela semble maintenant fonctionner correctement.

Mettez ceci dans votre fichier .htaccess:

 ErrorDocument 404 /notfound.html AddType application/x-httpd-php .html 

Mettez ceci dans notfound.html:

  404 Error, Page Not Found 

Remplacez votredomaine.com par l’URL de votre site Web. Remplacez / path / par / root / dir par le chemin absolu vers votre répertoire racine pour lancer la recherche. Remplacez l’erreur 404, page non trouvée par une page d’erreur 404 personnalisée.

Ce script doit alors rechercher de manière récursive dans votre système de fichiers les pages portant le même nom mais avec des majuscules différentes et redirect l’utilisateur s’il en trouve.

(Traduit par google)

Quel serait le besoin de faire récursif?
Si vous connaissez le chemin du fichier:
dirname ($ _SERVER ['REQUEST_URI'])

Il ne rest plus qu’à identifier le nom de fichier correct.

Ma version simplifiée du script serait:

.htaccess (dans le dossier racine)
ErrorDocument 404 /notfound.php

notfound.php (dans le dossier racine)

  

N’oubliez pas de changer:
1. YOURDOMAIN.COM
2. VOTRE MESSAGE PERSONNEL POUR 404
3. / HOME / YOUR / PATH / TO / WWW

en utilisant le dossier “vhosts.conf”. Les URL peuvent être rendues sensibles à la casse. emplacement: /var/www/vhosts/domain.com/conf/vhosts.conf

 RewriteEngine on rewritemap lowercase int:tolower RewriteCond $1 [AZ] RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]