
У меня есть настройка 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;
}