2015-11-12 1 views
2

Мне нужно получить только часть переменной $ host. Домен находится в форме img1. domain.com, и мне нужно получить «domain.com», а затем использовать его в перенаправлении.

Я пытаюсь это неправильно, как это:

$host ~* img[0-9]\.(.*); 
set $host_without_img $1; 

Я знаю, что это будет работать, если я бы поставил в в IF состоянии, как это:

if ($host ~* img[0-9]\.(.*)) { 
    set $host_without_img $1; 
} 

Но я просто не хочу использовать IF, когда это не требуется.

ответ

3

Вы можете использовать map, что-то вроде этого:

map $host $host_without_img { 
    default ...; 
    ~*img[0-9]\.(?<x_host_without_img>.*) $x_host_without_img; 
} 
+0

ли я правильно понимаю, что она будет выполняться при каждом запросе, потому что он должен быть использован в HTTP {} контексте? – Frodik

+2

№ Цитата из связанной документации: _Since переменные оцениваются только тогда, когда они используются, простое объявление даже большого числа переменных «map» не добавляет никаких дополнительных затрат на запрос обработки. – Roman

Смежные вопросы