Re: rewrite со слешом

Sergey Shepelev temotor at gmail.com
Wed Aug 5 21:20:24 MSD 2009


2009/8/5 Igor Sysoev <is at rambler-co.ru>:
> On Wed, Aug 05, 2009 at 05:58:33PM +0400, Dmitriy MiksIr wrote:
>
>> Такое ощущение сложилось после изучения rfc 2396.
>> В частности / - резервированный символ как сепаратор, а %2F -
>> заэскейпенный / именно для того, что бы рассматривать его как данные
>> внутри сегмента пути. В данном случае же происходит изменение семантики URI.
>> Вот, еще
>> 2.4.2. When to Escape and Unescape
>> Конец первого абзаца
>> Likewise, a URI must be separated into its components before the escaped
>> characters within those components can be safely decoded.
>
> Ну а как /1%2F2 должно отображаться на файловую систему - как /1/2
> или как /1%2F2 ? И как в таком случае быть с /1%202 ?
>

А урлы не должны отображаться на файловую систему. Не обязаны.
А то под виндой получится файл с именем "/1/2" вместо файла 2 в директории 1.

>> Igor Sysoev пишет:
>> >On Tue, Aug 04, 2009 at 09:21:07PM +0400, Dmitriy MiksIr wrote:
>> >
>> >>Если в выделении есть заенкоденный слеш - он разворачивается. В итоге
>> >>это приводит к таким вот результатам:
>> >>rewrite ^(/1.*[^a])$ $1.a redirect;
>> >>
>> >>GET /1%2F2 HTTP/1.0
>> >>
>> >>HTTP/1.1 302 Moved Temporarily
>> >>Server: nginx/0.7.55
>> >>Location: http://st.miksir.test.autocom/1/2.a
>> >
>> >А почему должно быть иначе ?
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>


More information about the nginx-ru mailing list