Avec mod_rewrite, comment forcer le chemin d'accès et la chaîne de requête à être en minuscules?

StackOverflow https://stackoverflow.com/questions/1619551

  •  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?

Était-ce utile?

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
scroll top