Используя mod_rewrite, как заставить путь и строку запроса быть строчными? - PullRequest
2 голосов
/ 25 октября 2009

Кажется, что это должно быть легко, но я не могу понять это из-за жизни.

Я хочу, чтобы весь URL-адрес был в нижнем регистре, например:

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

перенаправить все (301) на:

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

Добавление:

RewriteMap  lc int:tolower

на httpd.conf и:

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

в .htaccess, я могу сделать так, чтобы базовая часть URL перенаправлялась так, как я хочу (первые два случая выше), но я не могу понять, как заставить это работать для строки запроса. Кто-нибудь может указать мне, как это сделать?

Ответы [ 2 ]

0 голосов
/ 25 октября 2009

Попробуйте это правило:

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]
0 голосов
/ 25 октября 2009

Сделайте это, я не проверял:

RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...