Re: Замена if на try_files

Maxim Dounin mdounin на mdounin.ru
Ср Дек 14 14:11:33 UTC 2011


Hello!

On Wed, Dec 14, 2011 at 03:37:03PM +0200, Sergey Kobzar wrote:

> On 12/14/11 01:52, Maxim Dounin wrote:
> >Hello!
> >
> >On Tue, Dec 13, 2011 at 08:23:57PM +0200, Sergey Kobzar wrote:
> >
> >[...]
> >
> >>	location ^~ /$subfolder/errors/ {
> >>		...
> >>	}
> >
> >Unrelated note: так работать не будет.  В регулярных выражениях
> >переменные не поддерживаются, т.к. регулярные выражения
> >компилируются на стадии чтения конфигурации.
> 
> Максим, спасибо. Видимо я неверно прочитал документацию.
> 
> Т.е. если выражение попадает хотя бы под один локейшн с обычной
> строкой в шаблоне, то после такого локейшна location ^~
> обрабатываться не будет?

Нет.  Моё замечание относилось именно к использованию *переменных* 
в регулярном выражении.

> Можно немного поподробней?

Порядок выбора location подробно расписан тут:

http://nginx.org/ru/docs/http/ngx_http_core_module.html#location

: Для определения соответствия location'а и запроса сначала 
: проверяются location'ы, заданные обычными строками. Среди них 
: ищется максимальное совпадение. Затем проверяются регулярные 
: выражения. В отличие от обычных строк, они не сортируются, а 
: проверяются в порядке их следования в конфигурационном файле. 
: Проверка регулярных выражений прекращается после первого же 
: совпадения. Если совпадение с регулярным выражением не найдено, то 
: используется конфигурация максимально совпавшего location'а.

Регулярные выражения не проверяются, если это явно запрещено с 
помощью модификатора "^~", либо найдено точное совпадение с 
location'ом, заданным с модификатором "=".

Maxim Dounin



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