NGINX подстановочный знак подстановки в том же блоке сервера
Я не могу найти пример конкретного правила перезаписи, которое я пытаюсь выполнить.
Я хотел бы иметь правило перезаписи только для субдоменов, введенных, например.
https://sub.example.com/ -> https://example.com/directory1/directory2/sub
Из того, что я пробовал, это выглядит как самый близкий код, который я получил.
server_name example.com;
if ($host = *.example.com)
return 301 https://example.com/directory1/directory2/$1;
}
1 ответ
Решение
Посмотрите на документы:
Это было бы одно решение:
server_name .example.com;
if ($host ~ ^(?<sub>.+)\.example\.com$) {
return 301 http://example.com/directory1/directory2/$sub;
}
Это было бы другое решение:
server_name ~^(?<sub>.+)\.example\.com$;
return 301 http://example.com/directory1/directory2/$sub;
Какое решение лучше? Трудно сказать - это зависит от структуры трафика, который вы получаете, а также от того, какие другие серверы настроены на тот же дескриптор прослушивания.