Wenden Sie NGinx-Weiterleitungen nur auf die Hauptdomäne an, ausgenommen Subdomänen

Wenden Sie NGinx-Weiterleitungen nur auf die Hauptdomäne an, ausgenommen Subdomänen

Ich habe eine PHP-Anwendung eingerichtet, die auf mehreren Hosts lauscht, zum Beispiel:

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

Einige Routen in maindomain.com müssen umgeleitet werden. Dafür habe ich vor einiger Zeit diese Umleitung konfiguriert:

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

Dadurch werden alle Anfragen an maindomain.com/myroute/ an maindomain.com/new-myroute weitergeleitet.

Der Punkt ist, dass diese Weiterleitungen auch für die restlichen Subdomänen gelten, sodass eine Weiterleitung von a.maindomain.com/myroute zu maindomain.com/new-myroute erfolgt.

Ich möchte diese Subdomains von der Anwendung dieser Umleitung ausschließen und den Routentyp a.maindomain.com/myroute unberührt lassen.

Ich habe es mit verschiedenen Umschreibungen versucht, wie

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;

Aber keines davon funktioniert.

Irgendwelche Ideen, wie man die Weiterleitung nur auf die Hauptdomäne anwenden kann? Danke.

Bearbeiten: Der Servername hat ein Platzhalterzeichen, das alle möglichen Subdomänen abhört, die existieren könnten:

server_name maindomain.com *.maindomain.com;

Antwort1

Verwenden Sie entweder einen separaten Serverblock oder eine If-Bedingung

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

verwandte Informationen