Question Convertir et rediriger une URL en majuscule en minuscule en utilisant .htaccess


Je voudrais rediriger une URL avec des caractères majuscules http://localhost/A/B vers une version minuscule http://localhost/a/b en utilisant le fichier .htaccess.

En utilisant regex, je peux capturer A et B, mais est-il possible de les convertir en minuscules?


4
2017-09-03 08:39


origine




Réponses:


En .htaccess

<IfModule mod_speling.c>
CheckSpelling on
</IfModule>

Testé, fonctionne si le mod_speling est activé.

Ou, dans un httpd.conf à l'échelle du serveur:

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

De: http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/


10
2017-09-03 09:01



il Plus précisément dit en utilisant .htaccess! vous devriez avoir lu les commentaires avant même de copier le lien. - Prix
En effet, bien repéré. Ma réponse provoquera une erreur de serveur dans un fichier .htaccess. : o - Grizly
Oops! J'étais sur le point de sauter de joie en regardant la réponse de Grizly :-( - tintin
Ajout d'une version .htaccess de travail .. ;-) Bien sûr, si vous n'avez pas accès à httpd.conf, vous n'aurez probablement pas accès au chargement du module de rotation du moteur .. sera en minuscule si le dossier / fichier est en minuscule sur le système de fichiers. - Grizly
Yup ça marche Grizly, merci mille fois! - tintin


RewriteEngine On
RewriteBase /

# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]

# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] - [S=28]

# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2

# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]

RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]

1
2017-12-27 06:57



Vous devez indiquer où vous avez trouvé votre solution: askapache.com/htaccess/rewrite-uppercase-lowercase - cdmckay
Ça ne fonctionne pas. L'avez-vous testé avant de poster Answer? - Pratik Kamani