Apache2 переписать со строкой запроса дважды - PullRequest
8 голосов
/ 07 июня 2011

Использование этого правила в файле конфигурации виртуального хоста приводит к двойному экранированию параметров запроса:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Например:

http://example.com?f=hello%20world

Приводит к

https://example.com?f=hello%2520world

Обратите внимание, что "% 25" экранирует знак "%".Почему это происходит?

1 Ответ

16 голосов
/ 07 июня 2011

Попробуйте добавить тег [NE] (noescape) в конце правила перезаписи:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE]

Это происходит потому, что & и ? и некоторые другиепо умолчанию экранируются в процессе перезаписи.

...