проблема с rewrite и query_string

Igor Sysoev is at rambler-co.ru
Thu Nov 15 09:55:13 MSK 2007


On Thu, Nov 15, 2007 at 09:43:29AM +0300, Andrei Nigmatulin wrote:

> Игорь, есть ли у Вас какие нибудь комментарии по поводу этого вопроса ?

Это баг. Лечиться не будет. Как-то облегчить ситуацию можно тем, что
$args можно ставить с помощью set.

> On Friday 02 November 2007 01:57, Andrei Nigmatulin wrote:
> > Привет !
> >
> > Столкнулся с такой проблемой:
> >
> > Если делать
> >
> > 	rewrite ^ /path/file?query_string last;
> >
> > открытым текстом, то все работает как и ожидается - ищется location для
> > "/path/file", а query_string при обращении к статике отбрасывается.
> >
> > Если уже имеется переменная для перезаписываемого урла
> >
> > 	set $myurl "/path/file?query_string";
> > 	rewrite ^ $myurl last;
> >
> > то location ищется для "/path/file?query_string", хотя судя по
> > документации, не должен.
> >
> > Мало того, "?query_string" не отбрасывается, и если это статика то nginx
> > пытается открыть с диска файл "/root/path/file?query_string".
> >
> > Чтобы обойти эту проблему пришлось изобрести такое:
> >
> >         set $myurl_args "";
> >
> >         if ($myurl ~ \?(.*) ) {
> >             set $myurl_args $1;
> >         }
> >
> >         if ($myurl ~ ^(.*)\? ) {
> >             set $myurl $1;
> >         }
> >
> >         rewrite ^ $myurl?$myurl_args last;
> >
> > Вопрос, это так и задумано или это баг ?
> >
> > nginx-0.6.14, linux.


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





More information about the nginx-ru mailing list