Как я могу перенаправить mydomain.com
и любой поддомен *.mydomain.com
на www.adifferentdomain.com
с помощью NGINX?
Как перенаправить на другой домен с помощью NGINX?
Ответы (8)
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.
- person Yitz; 23.09.2013
?
достигает в конце?
- person Dan Dascalescu; 04.07.2014
rewrite
и return 301 $scheme://www.adifferentdomain.com$request_uri;
?
- person Dan Dascalescu; 04.07.2014
$request_uri
уже имеет строку запроса, нет необходимости добавлять ее снова. Синтаксис return 301
новее, и между двумя методами не должно быть разницы в поведении, но когда я изначально отвечал на этот вопрос, во многих дистрибутивах не было требуемой версии, поэтому я выбрал более безопасный синтаксис.
- person kolbyjack; 23.07.2014
site.com
на site.org
, www.site.com
на www.site.org
и test.site.com
на test.site.org
?
- person MarSoft; 21.06.2015
return 301
мне нужен вопросительный знак в конце? Кроме того, будет ли http://www.adifferentdomain.com$request_uri
включать варианты adifferentdomain
, которые не включают www?
- person PKHunter; 09.08.2015
listen 443 ssl;
, чтобы это работало, вместо того, чтобы просто указывать на первый возвращенный виртуальный хост под вводящим в заблуждение доменом.
- person notbrain; 16.08.2017
302
. Перенаправление 301
означает, что страница навсегда перемещена в новое место, а перенаправление 302
означает, что перемещение является временным.
- person Majid; 08.12.2019
301 | 302
- person Carlos.V; 17.07.2020
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
и
http://wiki.nginx.org/Pitfalls#Taxing_Rewrites
Зачем использовать модуль перезаписи, если можно сделать return
? С технической точки зрения, return
является частью модуля перезаписи, поскольку вы можете прочитать здесь, но этот фрагмент легче читать, имхо.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Вы также можете сделать редирект 301.
return 302 $scheme://forwarded-domain.com$request_uri;
- person Robin van Baalen; 05.01.2015
Это должно работать через 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;
.
- person citruspi; 22.08.2012
Если вы хотите перенаправить запросы для «domain1.com» на «domain2.com», вы можете создать блок сервера, который выглядит следующим образом:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
- person Rafik Farhad; 24.02.2020
Я использую этот код для своих сайтов
server {
listen 80;
listen 443;
server_name .domain.com;
return 301 $scheme://newdomain.com$request_uri;
}
Вы можете просто написать условие if внутри блока server {}:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}
Временное перенаправление
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;
}