Re: Выделения и вложенные location

Igor Sysoev igor на sysoev.ru
Пт Фев 18 16:32:35 MSK 2011


On 18.02.2011, at 16:27, Вадим Лазовский wrote:

> Здравствуйте.
>
> есть location заданный регулярным выражением:
>
> location ~ /(\d+)/(\d+)(\..*)$ {
>    alias /files/$1/$2$3;
> }
>
> Работает, как надо.
>
> Модифицируем:
>
> location ~ /(\d+)/(\d+)(\..*)$ {
>    alias /files/$1/$2$3;
>
>    location ~ \.flv$ {
>        alias /files/$1/$2$3;
>    }
> }
>
> - во вложеном location выделения потеряны. Предположим, что это  
> нормальное поведение.
> Но почему ломается родительский location, точнее, alias в нем?
>
> В debug-логе примерно следующее:
>
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script copy: "/ 
> files/"
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script capture: ""
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script copy: "/"
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script capture: ""
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script copy: "/"
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script capture: ""
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script capture: ""
> ...
> 2011/02/18 16:05:08 [debug] 4053#0: *3754770 http script var: "/ 
> files//"
>
> Т.е., при наличии вложенных location заданых регулярными выражениями  
> выделения родительского location теряются.

Потому что после совпадения с родительским регулярным выражением  
делается
проверка вложенного. При этом предыдущие выделения теряются. Нужно
использовать именованные выделения.


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




Подробная информация о списке рассылки nginx-ru