Применять перенаправления NGinx только к основному домену, исключая поддомены

Применять перенаправления NGinx только к основному домену, исключая поддомены

У меня есть настройка PHP-приложения, прослушивающего несколько хостов, например:

maindomain.com a.maindomain.com b.maindomain.com

Некоторые маршруты в maindomain.com необходимо перенаправить. Для этого я настроил это перенаправление некоторое время назад:

rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

Что заставляет все запросы к maindomain.com/myroute/ перенаправляться на maindomain.com/new-myroute.

Дело в том, что эти перенаправления применяются и к остальным поддоменам, делая перенаправление с a.maindomain.com/myroute на maindomain.com/new-myroute.

Я хотел бы исключить эти поддомены из применения этого перенаправления, оставив маршруты типа a.maindomain.com/myroute нетронутыми.

Я пробовал разные варианты переписывания, например

rewrite ^https://maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

rewrite ^maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

rewrite maindomain.com/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;

Но ни один из них не работает.

Есть идеи, как применить перенаправление только к основному домену? Спасибо.

Редактировать: имя сервера имеет подстановочный знак, прослушивающий все возможные поддомены, которые могут существовать:

server_name maindomain.com *.maindomain.com;

решение1

Либо используйте отдельный блок сервера, либо используйте условие if.

if ($host = "example.com") {
    rewrite ^/myroute/(.*)$ http://$server_name/new-myroute/$1 permanent;
}

Связанный контент