Usando mod_rewrite, como faço para forçar o caminho e query string para ser todas as letras minúsculas?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Isto parece que deve ser uma coisa fácil de fazer, mas para a vida de mim eu não posso descobrir isso.

Eu quero forçar toda a minha URL para estar em minúsculas, de modo que, por exemplo:

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

todos (301) redirecionamento para:

http://www.example.com/foo?q=bar

Adicionando:

RewriteMap  lc int:tolower

para httpd.conf, e:

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

para .htaccess, eu posso fazer a parte de base do URL redirecionar o jeito que eu quero (os dois primeiros casos acima), mas eu não consigo descobrir como fazer este trabalho com a string de consulta. Alguém pode me aponte na direção de como fazer isso?

Foi útil?

Solução

Tente esta regra:

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]

Outras dicas

Dê este um tiro, eu não testá-lo:

RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top