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

Andrei Nigmatulin andrei.nigmatulin at gmail.com
Fri Nov 2 01:57:36 MSK 2007


Привет !

Столкнулся с такой проблемой:

Если делать

	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.


-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


More information about the nginx-ru mailing list