NGinx 域名重定向

NGinx 域名重定向

假设我有一个名为的网站xyz.co,我还有其他具有相同前缀的域名,例如xyz.com, xyz.it, xyz.co.it

目前,nginx 在 中运行良好,我server_name xyz.co希望将所有其他域重定向到 ,同时我希望将上述版本重定向到。我该如何实现这一点?这是 nginx 网络服务器级别更改吗?还是我需要在 中进行更改?nginx.confport 80xyz.cowww.*xyz.coDNS

答案1

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如果您想要 302 重定向而不是 301,则可以从重写指令中删除标志。

答案2

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;
}

答案3

文档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是一种更好的方法,为了实现您的要求,请参阅他提供的答案。

相关内容