Redirect 如何使用NGINX重定向到其他域?
我如何使用NGINX将Redirect 如何使用NGINX重定向到其他域?,redirect,nginx,vhosts,Redirect,Nginx,Vhosts,我如何使用NGINX将mydomain.com和任何子域*.mydomain.com重定向到www.adiffertdomain.com 这应该可以通过 将示例从www.Example.com改写为Example.com: server { server_name www.example.com; rewrite ^ http://example.com$request_uri? permanent; } 使用.mydomain.com语法支持后缀匹配: se
mydomain.com
和任何子域*.mydomain.com
重定向到www.adiffertdomain.com
这应该可以通过
将示例从www.Example.com改写为Example.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
使用.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;
}
如果可以执行
返回
,为什么要使用“重写”模块?从技术上讲,return
是重写模块的一部分,但这段代码更容易阅读
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
你也可以给它一个301重定向
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
及
如果要将“domain1.com”的请求重定向到“domain2.com”,可以创建一个如下所示的服务器块:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
临时重定向
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
永久重定向
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;
}
您只需在服务器{}块内编写一个if条件:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}
我正在为我的网站使用此代码
server {
listen 80;
listen 443;
server_name .domain.com;
return 301 $scheme://newdomain.com$request_uri;
}
这只是将www.example.com重定向到example.com。我想将两者重定向到不同的域。我能用一条规则做到这一点吗?我不确定,但我认为服务器名为mydomain.com;重写www.adiffertdomain.com永久;}应该这样做吗?这应该包括一切*.mydomain.com?@deb您只需要
server\u name example.com www.example.com代码>。该问题特别要求任何子域重定向到其他域。这两个答案都没有(明确地)答案。这缺少了重要的301!我不需要输入一个端口来监听吗?e、 听80。我有多个域需要重定向到主域,但我的服务器也有多个虚拟服务器用于各种其他域。@Ryan未指定时,listen
指令默认为端口80。它实际上比一般情况要复杂一点;有关更多详细信息,请参阅。最后的?
实现了什么?重写和返回301之间的区别是什么$scheme://www.adifferentdomain.com$request_uri代码>?是什么?重写结束时,通知nginx不要附加原始查询字符串。由于$request\u uri
已经具有查询字符串,因此无需再次追加它。return 301
语法较新,两种方法的行为应该没有区别,但是当我最初回答这个问题时,许多发行版没有所需的版本,所以我使用了更安全的语法。这会保留路径和查询参数吗?不,这个示例没有@Mark。但是我想你可以把前面的答案混合起来,得出如下的结果:return302$scheme://forwarded-domain.com$request_uri
另一方面,在许多情况下,您可能应该重定向到https,而不是保留方案(即使用https而不是$scheme)。这与协议相关链接现在被视为不推荐使用的原因相同-@mahemoff这并不完全正确。考虑将Web服务器放在卸载SSL的负载均衡器后面的情况。有人可能需要重定向HTTPS://请求也。代码>听443代码>在Nginx()上使用“if”语句时需要小心。在这种情况下,您可以只使用“server\u name mydomain.com”来代替。如果在位置上下文中使用“server\u name mydomain.com”是邪恶的,则在用于指定重定向主机时是安全的