Re: не все локешены получают зачение из регулярки сервера
Peter Leonov
gojpeg at gmail.com
Wed Sep 9 19:35:31 MSD 2009
On 09.09.2009, at 17:15, Maxim Dounin wrote:
> Hello!
>
> On Wed, Sep 09, 2009 at 04:40:46PM +0400, Peter Leonov wrote:
>
>> При таком конфиге
>>
>> server
>> {
>> …
>> server_name ~^([A-Za-z\-\.]+)\.retailstars\.ru$;
>>
>> set $city $1;
>> location /db { root /www/life/new.retailstars.ru/$city; }
>> location /index { root /www/life/new.retailstars.ru/$city; }
>> location /form { root /www/life/new.retailstars.ru/$city; }
>> …
>> }
>>
>> Переменная $city определена только в /
>> index, для остальных локейшенов
>> это пустая строка.
>> Отказ от временной переменной $city и
>> использование $1 не помогает.
>
> Если при обработки запроса случяется
> матчинг любого регулярного
> выражения (e.g. location заданный
> регулярным выражением),
Понимаю это.
Регуляркой задан только сервер (я
регулярки, вообще, не очень-то люблю).
> а потом
> - внутренний редирект,
Точно! Есть включения через SSI.
Локейшен /index срабатывает напряму, а
остальные инклюдятся в его реквест
через SSI-фильтр. Наверняка, не хватает
пары строчечек в конструкторе
реквестов. Или регулярки в SSI
конфликтуют с регулярками из конфига.
> то конструкция
>
> server_name ~^(...);
> set $blah $1;
>
> работать не будет. Ибо матчинга
> server_name заново не случится, а
> set $blah $1 - произойдёт и использует $1 из
> результатов последнего
> регулярного выражения.
То есть set — это такое же императивное
зло, как и if/rewrite? ;)
>
> Коротко резюмируя - если в конфиге
> есть "...", то так делать
> нельзя.
Да, многоточия меня тоже смутили бы.
Пока откачусь на конфиг с копипастом.
Спасибо за подсказку, Максим. Попробую
ночерком разобраться по дебаг-логу :)
>
> Maxim Dounin
>
> p.s. Please do not hijack unrelated threads.
>
С уважением,
Петр Леонов.
+7 (905) 758-12-73
More information about the nginx-ru
mailing list