NGinx Переадресация доменного имени
Допустим, у меня есть сайт с именем xyz.co
У меня также есть другие доменные имена с таким же префиксом, как xyz.com, xyz.it, xyz.co.it
Сейчас nginx отлично работает с server_name xyz.co
в nginx.conf
в port 80
Я хотел бы перенаправить все остальные домены xyz.co
также я бы хотел www.*
версии выше, чтобы перенаправить на xyz.co
, Как я могу получить это? Изменяется ли уровень веб-сервера nginx? или мне нужно внести эти изменения в DNS
?
3 ответа
server {
listen 80;
server_name www.xyz.co xyz.com xyz.it xyz.co.it www.xyz.com www.xyz.it www.xyz.co.it;
rewrite ^ http://xyz.co$request_uri? permanent;
}
server {
listen 80;
server_name xyz.co;
....................
....................
....................
}
Вы можете удалить permanent
флаг из директивы rewrite, если вы хотите перенаправить 302 вместо 301.
server {
server_name ~^(?:www\.)?xyz\.(?:com|(?:co\.)?it)$;
return http://xyz.co$request_uri;
}
или более эффективный:
server {
listen 80;
server_name xyz.com www.xyz.com
xyz.it www.xyz.it
xyz.co.it www.xyz.co.it;
return http://xyz.co$request_uri;
}
- http://nginx.org/r/server_name
- http://nginx.org/r/return
- man pcresyntax
- человек pcrepattern
Документация http://wiki.nginx.org/HttpRewriteModule
if ($http_host ~* "(www\.)?xyz\.(com|(co\.)?it)"){
rewrite ^(.*)$ http://xyz.co/$1 break;
}
Это потребует тестирования и модификации по вкусу, но некоторые быстрые тесты показывают, что он должен делать то, что вам нужно.
ОБНОВЛЕНИЕ для каждой ссылки, предоставленной VBart, это: http://nginx.org/en/docs/http/converting_rewrite_rules.html - гораздо лучший метод, для достижения того, что вам требуется, смотрите его ответ.