2017-07-27 8 views
-1

Ich kann kein Beispiel für die spezifische Rewrite-Regel finden.NGINX Platzhalter im selben Serverblock

Ich hätte gerne eine Rewrite-Regel für nur Sub-Domains eingegeben zum Beispiel.

https://sub.example.com/ ->https://example.com/directory1/directory2/sub

Von dem, was ive versucht, das sieht aus wie der nächste Code, den ich bekommen haben.

server_name example.com; 

if ($host = *.example.com) 
    return 301 https://example.com/directory1/directory2/$1; 
} 
+0

Mögliche Duplikate von [Nginx Subdomain Rewrite] (https://Stackoverflow.com/questions/2498712/nginx-subdomain-rewrite) –

Antwort

0

Werfen Sie einen Blick auf die Dokumentation:


Diese eine Lösung wäre:

server_name .example.com; 
if ($host ~ ^(?<sub>.+)\.example\.com$) { 
    return 301 http://example.com/directory1/directory2/$sub; 
} 

Dies wäre eine andere Lösung sein:

server_name ~^(?<sub>.+)\.example\.com$; 
return 301 http://example.com/directory1/directory2/$sub; 

Welche Lösung ist besser? Es ist schwer zu sagen - es hängt von den Mustern des Datenverkehrs ab, den Sie erhalten, sowie davon, welche anderen Server auf demselben Listenpunkt konfiguriert sind.

+0

Das obige funktioniert perfekt, ich habe versucht, es zu ändern, anstatt eine Rückkehr, so dass ich Erhalten Sie kein SSL-Zertifikat, das für Subdomain gültig ist. Gibt es eine Möglichkeit, dieses Problem zu umgehen? – breebee2

+0

Ich denke nicht, dass Sie hier eine Umschreibung verwenden sollten (wenn Sie die Anfrage-URI benötigen, verwenden Sie '$ request_uri'); aber für SSL gibt es keinen Unterschied; Sie müssen natürlich für alle Subdomains korrekte Zertifikate haben, damit dies ohne Warnung funktioniert (oder verwenden Sie einfach kein SSL!). – cnst