如何使用NGINX重定向到不同的域?

时间:2011-05-18 12:55:56

标签: redirect nginx vhosts

如何使用NGINX将mydomain.com和任何子域*.mydomain.com重定向到www.adifferentdomain.com

8 个答案:

答案 0 :(得分:238)

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

答案 1 :(得分:22)

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

答案 2 :(得分:12)

如果可以return,为什么要使用重写模块?从技术上讲,return是重写模块的一部分you can read here,但这个片段更容易阅读imho。

server {
    server_name  .domain.com;

    return 302 $scheme://forwarded-domain.com;
}

你也可以给它301重定向。

答案 3 :(得分:10)

这应该通过HTTPRewriteModule工作。

从www.example.com到example.com的重写示例:

server {    
    server_name www.example.com;    
    rewrite ^ http://example.com$request_uri? permanent; 
}

答案 4 :(得分:7)

如果您想将“domain1.com”的请求重定向到“domain2.com”,您可以创建一个如下所示的服务器块:

server {
    listen 80;
    server_name domain1.com;
    return 301 $scheme://domain2.com$request_uri;
}

答案 5 :(得分:1)

您可以简单地在服务器{}块中编写一个if条件:

server { 

    if ($host = mydomain.com) {
        return 301 http://www.adifferentdomain.com;
    } 
}

答案 6 :(得分:0)

临时重定向

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;

}

答案 7 :(得分:0)

我正在将这些代码用于我的网站

server {
        listen 80;
        listen 443;
        server_name  .domain.com;

        return 301 $scheme://newdomain.com$request_uri;
}