Экранирование пробелов в mod_rewrite

У меня есть следующее правило Apache mod_rewrite:

RewriteRule ^(.*) http://127.0.0.1:4321/$1 [proxy]

Это прекрасно работает; Apache перенаправляет все запросы на сервер CherryPy, который у меня работает на той же машине.

К сожалению, у меня возникают проблемы с путями, в которых есть пробел. Если я делаю запрос на /Sites/some%20site/image.png, то Apache делает запрос к CherryPy на /Sites/some site/image.png, что искажает CherryPy.

Есть ли способ указать в моем RewriteRule, что я хотел бы повторно экранировать пробелы в URL-адресе перед пересылкой запроса в CherryPy?

РЕДАКТИРОВАТЬ: я нашел ссылку на что-то, что могло бы помочь, но я пошел дальше и уклонился проблему, заменив пробелы символами подчеркивания и заставив CherryPy выполнить преобразование перед обслуживанием файлов.

Я все еще хотел бы знать лучшее решение, если у кого-то оно есть; к сожалению, у меня крайний срок, и в данный момент у меня нет времени возиться с этим самому. Я могу вернуться к этому позже и опубликовать дальнейшие обновления, когда найду время.


person Eli Courtwright    schedule 29.10.2008    source источник
comment
Вы уверены, что это именно то правило, которое у вас есть? Это было бы поведением, если бы вы использовали флаг [NE]. Возможно, вы наткнулись на ошибку, какая у вас версия и платформа Apache?   -  person Vinko Vrsalovic    schedule 29.10.2008
comment
Это точное правило; Я скопировал/вставил его из своего файла .htaccess. Я использую Apache 2.2.9 на Windows Server 2003.   -  person Eli Courtwright    schedule 29.10.2008
comment
Попробуйте включить rewritelog на уровне rewriteloglevel 9 и проверьте, есть ли подсказка, потому что это странно   -  person Vinko Vrsalovic    schedule 29.10.2008


Ответы (1)


См. http://tools.cherrypy.org/wiki/ModRewrite#Bewaretheencodingbug. самое известное решение.

person fumanchu    schedule 29.10.2008