Aplicar redirecionamentos NGinx apenas ao domínio principal, excluindo subdomínios

Aplicar redirecionamentos NGinx apenas ao domínio principal, excluindo subdomínios

Tenho uma configuração de uma aplicação PHP escutando em vários hosts, por exemplo:

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

Algumas rotas em maindomain.com precisam ser redirecionadas. Para isso, configurei esse redirecionamento há algum tempo:

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

O que faz com que todas as solicitações para maindomain.com/myroute/ sejam redirecionadas para maindomain.com/new-myroute.

O problema é que esses redirecionamentos também se aplicam ao restante dos subdomínios, fazendo com que a.maindomain.com/myroute redirecione para maindomain.com/new-myroute.

Gostaria de excluir esses subdomínios da aplicação desse redirecionamento, deixando as rotas do tipo a.maindomain.com/myroute intocadas.

Eu tentei com diferentes reescritas, como

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;

Mas nenhum deles funciona.

Alguma idéia de como aplicar o redirecionamento apenas ao domínio principal? Obrigado.

Editar: o nome do servidor possui um curinga, escutando todos os subdomínios possíveis que possam existir:

server_name maindomain.com *.maindomain.com;

Responder1

Use um bloco de servidor separado ou uma condição if

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

informação relacionada