
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;
}