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