Как я могу перенаправить mydomain.com
и любой поддомен *.mydomain.com
на www.adifferentdomain.com
использование NGINX?
Как я могу перенаправить mydomain.com
и любой поддомен *.mydomain.com
на www.adifferentdomain.com
использование NGINX?
Ответы:
имя_сервера поддерживает совпадения суффиксов с использованием синтаксиса .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;
}
Вы можете просто написать условие if внутри блока server {}:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}