Jak mogę przekierować mydomain.com
i dowolną subdomenę *.mydomain.com
do www.adifferentdomain.com
korzystania z NGINX?
Odpowiedzi:
nazwa_serwera obsługuje dopasowania sufiksów przy użyciu składni .moja_domena.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
lub w dowolnej wersji 0.9.1 lub nowszej:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listen
Dyrektywa domyślnie przyjmuje port 80, jeśli nie jest określony. W rzeczywistości jest to trochę bardziej skomplikowane niż ogólnie; zobacz dokumentację konfiguracji nginx, aby uzyskać więcej informacji.
?
osiągniesz na końcu?
rewrite
i return 301 $scheme://www.adifferentdomain.com$request_uri;
?
$request_uri
już ma ciąg zapytania, nie ma potrzeby ponownego dodawania go. return 301
Składnia jest nowszy, i nie powinno być żadnej różnicy w zachowaniu między tymi dwoma metodami, ale kiedy pierwotnie odpowiedział na to pytanie, wiele dystrybucji nie ma wymaganej wersji, więc poszedłem z bezpieczniejszej składni.
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
i
Po co używać modułu przepisywania, jeśli możesz return
? Technicznie rzecz biorąc, return
jest częścią modułu przepisywania, jak możesz przeczytać tutaj, ale ten fragment jest łatwiejszy do odczytania imho.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Możesz również nadać mu przekierowanie 301.
return 302 $scheme://forwarded-domain.com$request_uri;
To powinno działać przez HTTPRewriteModule .
Przykład przepisania z www.example.com na example.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;
.
Jeśli chcesz przekierować żądania z „domena1.com” do „domena2.com”, możesz utworzyć blok serwera, który wygląda następująco:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
Możesz po prostu napisać warunek if w bloku {} serwera:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}
Tymczasowe przekierowanie
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
Trwałe przekierowanie
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
W pliku konfiguracyjnym nginx dla określonej witryny:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}