parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Apache 2, mod_rewrite и non-US-ASCII-URL

G_Z 02.07.2010 16:33 / 02.07.2010 16:38

Наткнулся на странное.
Apache 2.x (под рукой 2.2.4 и 2.2.15) ошибочно интерпретирует URL, содержащий что-либо, выходящее за рамки US-ASCII.
Естественно символы заэскейпенны, как через taint[uri], так и браузерами, при ручном вводе в строку адреса.

Сайт работает в UTF-8, кодировка AddDefaultCharset в Apache — UTF-8 (на результат не влияет, можно и Windows-1251 выставить).
Платформа — Win (Windows 7 x64, русская).

Пример.
Запрос: /blog/тест/ (в коде как /blog/%D1%82%D0%B5%D1%81%D1%82/).
Htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ _ind.html?_action=$1 [QSA]
Окружение (смотрим через Perl):
QUERY_STRING = _action=blog/N???N?N?/
REDIRECT_QUERY_STRING = _action=blog/тест/
REQUEST_URI = /blog/%D1%82%D0%B5%D1%81%D1%82/
Вот это «N???N?N?» смущает, явно беда с перекодированием.
Соответственно, до скриптов доходит в лучшем случае «/blog/n».

Нашёл несколько случаев подобного:
http://stackoverflow.com/questions/2916194/trouble-with-utf-8-chars-apache2-rewrite-rules
http://www.answerium.com/article35/
http://2lx.ru/2009/12/mod_rewrite-i-peredacha-specsimvolov/

Директива B, вызывает падение Apache при попытке запуска Парсера, вариант с переменной в mod_rewrite пока не пробовал.

Вопрос: наблюдается ли у кого подобное? На какой платформе, с какой версией?
Под Apache 1.3 безо всяких проблем работаю с кириллицей в URL.
Есть подозрение на Win, т.к. под FreeBSD подобного не наблюдается.

Видимо, не часто используется Win + Apache, проблема редкая.