rewrite со слешом

Igor Sysoev is at rambler-co.ru
Wed Aug 5 21:48:21 MSD 2009


On Wed, Aug 05, 2009 at 09:20:24PM +0400, Sergey Shepelev wrote:

> 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%202 - это файл "/1 2".

> А то под виндой получится файл с именем "/1/2" вместо файла 2 в директории 1.

Винда понимает слэши. nginx/Windows использует именно их.

> >> 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
> >
> >

-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list