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://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 - гораздо лучший метод, для достижения того, что вам требуется, смотрите его ответ.

Другие вопросы по тегам