$uri - url_encoded?
Igor Sysoev
igor на sysoev.ru
Вт Сен 14 22:37:30 MSD 2010
On Tue, Sep 14, 2010 at 09:31:05PM +0400, xinu wrote:
> sorry, поспешил с enter.
>
> вопрос, который собственно и хотел написать:
>
> как убедить nginx не переводить запрошенный URL в urldecoded?
>
> моя проблема в пробелах, которые я кодирую в cms "%20", все файлы также (т.е. с "%20" лежат на диске - т.е. без пробелов (!!!).
> однако запрос
>
> GET /file%20with%20blank HTTP/1.1
>
> будет по try_files искать "/file with blank" - файл, который я генерирую как "/file%20with%20blank"
>
> $request_uri - выглядет так как мне надо и работал бы, но - не помогает, т.к. есть еще реврайты и try_files мне нужен по измененному УРЛу.
> реврайты же только ухудшают УРЛ - переписывая его с "%20" на "%2520" -- т.е переписываю "%" в его url_ecoded форму: "%25".
>
> как однозначно определить поведение / реакцию nginx'а ?
Запрашивать "/file%2520with%2520blank".
> если решение еще нет, опции (в конфиге в server, location и в if) :
>
> url_dencoding on / of;
>
> помогли бы.
>
> большое спасибо.
>
> Сергей.
>
> ps: sbin/nginx -v
> nginx version: nginx/0.8.34
>
>
> ps2: подобная проблема распространяется и на многие другие "символы" например "/" -> "%2f"
> т.е. если мне нужен файл с именем "2/3" - не файл 3 в каталоге 2 , а именно "2/3" -- я делаю просто "2%2f3" файл - на мой взгляд - удобно.
>
> считаю фичу полезной.
>
> если же есть другое готовое решение - буду рад и признателен его узнать
Конечно, есть: если файл на диске называется "2%2f3", то запрашывать
нужно "2%252f3", а не "2%2f3".
--
Igor Sysoev
http://sysoev.ru/en/
Подробная информация о списке рассылки nginx-ru