176

如何重定向mydomain.com和任何子域*.mydomain.comwww.adifferentdomain.com使用 NGINX?

4

8 回答 8

335

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;
}
于 2011-05-18T13:28:09.780 回答
29
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

于 2014-04-17T14:48:00.340 回答
17

如果可以,为什么要使用重写模块return?从技术上讲,return它是重写模块的一部分,您可以在此处阅读,但这个片段更容易阅读恕我直言。

server {
    server_name  .domain.com;

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

你也可以给它一个 301 重定向。

于 2014-02-12T19:55:47.617 回答
11

这应该通过HTTPRewriteModule工作。

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

server {    
    server_name www.example.com;    
    rewrite ^ http://example.com$request_uri? permanent; 
}
于 2011-05-18T12:59:17.460 回答
10

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

server {
    listen 80;
    server_name domain1.com;
    return 301 $scheme://domain2.com$request_uri;
}
于 2017-01-06T10:37:22.627 回答
7

我正在为我的网站使用此代码

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

        return 301 $scheme://newdomain.com$request_uri;
}
于 2020-10-21T05:53:04.833 回答
3

您可以简单地在 server {} 块内编写一个 if 条件:

server { 

    if ($host = mydomain.com) {
        return 301 http://www.adifferentdomain.com;
    } 
}
于 2020-06-01T05:39:05.410 回答
2

临时重定向

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;

}
于 2018-10-02T09:50:54.987 回答