Aplique redireccionamientos NGinx solo al dominio principal, excluyendo los subdominios

Aplique redireccionamientos NGinx solo al dominio principal, excluyendo los subdominios

Tengo una configuración de una aplicación PHP escuchando en varios hosts, por ejemplo:

dominioprincipal.com a.dominioprincipal.com b.dominioprincipal.com

Algunas rutas en maindomain.com deben redirigirse. Para eso configuré esta redirección hace tiempo:

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

Lo que hace que todas las solicitudes a maindomain.com/myroute/ redirijan a maindomain.com/new-myroute.

El caso es que estos redireccionamientos también se aplican al resto de subdominios, haciendo que a.maindomain.com/myroute redirija a maindomain.com/new-myroute.

Me gustaría excluir estos subdominios de la aplicación de esa redirección, dejando intactas las rutas tipo a.maindomain.com/myroute.

Lo he intentado con diferentes reescrituras, 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;

Pero ninguno de ellos funciona.

¿Alguna idea sobre cómo aplicar la redirección sólo al dominio principal? Gracias.

Editar: el nombre del servidor tiene un comodín, escuchando todos los subdominios posibles que puedan existir:

server_name maindomain.com *.maindomain.com;

Respuesta1

Utilice un bloque de servidor independiente o utilice una condición if

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

información relacionada