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

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

252769 次浏览

这应该通过HttpRewriteModule起作用。

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

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

服务器_名称支持使用.mydomain.example语法的后缀匹配:

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

或在任何版本0.9.1或更高版本上:

server {
server_name .mydomain.example;
return 301 http://www.adifferentdomain.example$request_uri;
}

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

server {
server_name  .domain.com;


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

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

server {
server_name .mydomain.example;
return 301 http://www.adifferentdomain.example$request_uri;
}

http://wiki.nginx.org/httprewritemodule#return.

http://wiki.nginx.org/pitfalls#taxing_rewrites.

如果要将对domain1.example的请求重定向到domain2.example,则可以创建如下所示的服务器块:

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

临时重定向

rewrite ^ http://www.RedirectToThisDomain.example$request_uri? redirect;

永久重定向

rewrite ^ http://www.RedirectToThisDomain.example$request_uri? permanent;

在特定站点的nginx配置文件中:

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


}

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

server {


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

我在我的网站上使用这个代码

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


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