Avec mod_rewrite, comment forcer le chemin d'accès et la chaîne de requête à être en minuscules?
-
06-07-2019 - |
Question
Cela semble être une chose facile à faire, mais je n'arrive pas à comprendre.
Je souhaite forcer l'intégralité de l'URL à être en minuscule, afin que, par exemple:
http://www.EXAMPLE.com/foo?q=bar
http://www.example.com/FOO?q=bar
http://www.example.com/foo?Q=BAR
http://www.EXAMPLE.com/FOO?Q=BAR
all (301) redirige vers:
http://www.example.com/foo?q=bar
Ajout:
RewriteMap lc int:tolower
vers httpd.conf et:
RewriteEngine on
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [L,R=301]
to .htaccess, je peux rediriger la partie de base de l'URL comme je le souhaite (les deux premiers cas ci-dessus), mais je ne vois pas comment utiliser cela pour la chaîne de requête. Quelqu'un peut-il m'indiquer comment procéder?
La solution
Essayez cette règle:
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}}?${lc:%{QUERY_STRING}} [L,R=301]
Autres conseils
Donnez ceci à l’écran, je ne l’ai pas testé:
RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow