Відповіді:
server_name підтримує збіги суфіксів із використанням синтаксису .mydomain.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
або на будь-якій версії 0.9.1 або вище:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listen
Директива за замовчуванням порту 80, коли не вказано. Це насправді трохи складніше, ніж загалом; див. Документи конфігурації nginx для отримання більш детальної інформації.
?
досягає наприкінці?
rewrite
і return 301 $scheme://www.adifferentdomain.com$request_uri;
?
$request_uri
рядок запиту вже є, додавати її знову не потрібно. return 301
Синтаксис новіше, і не повинна бути ніякої різниці в поведінці між цими двома методами, але коли я спочатку відповів на це питання, багато дистрибутиви не мають необхідну версію, так що я пішов з більш безпечним синтаксисом.
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
і
Навіщо використовувати модуль перезапису, якщо можна return
? Технічно кажучи, return
це частина модуля переписання, як ви можете прочитати тут, але цей фрагмент легше читати imho.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Ви також можете надати йому переадресацію 301.
return 302 $scheme://forwarded-domain.com$request_uri;
Це має працювати через HTTPRewriteModule .
Приклад переписати з www.example.com на example.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;
.
Якщо ви хочете перенаправити запити з "domain1.com" на "domain2.com", ви можете створити блок сервера, який виглядає приблизно так:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
Тимчасове переадресація
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
Постійне переадресація
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
У файлі конфігурації nginx для конкретного сайту:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}
Ви можете просто написати, якщо умова всередині блоку {} сервера:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}