#apache #mod-rewrite #query-string
#apache #мод-перезапись #строка запроса
Вопрос:
Использование этого правила в файле конфигурации виртуального хоста приводит к двойному экранированию параметров запроса:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Например:
http://example.com?f=hello world
Приводит к
https://example.com?f=hello%20world
Обратите внимание на «% 25», экранирующий знак «%». Почему это происходит?
Ответ №1:
Попробуйте добавить тег [NE] (noescape) в конце правила перезаписи:
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE]
Это происходит потому, что amp;
and ?
и некоторые другие экранируются по умолчанию в процессе перезаписи.