【发布时间】:2013-03-05 08:14:41
【问题描述】:
如何重定向“http://domain.com”。使用 Nginx 到“http://domain.com”?
推荐的方法是什么?正则表达式还是有其他选择?
【问题讨论】:
-
看到这篇关于域中尾随点的危险的帖子:saynt2day.blogspot.com/2013/03/…
标签: nginx
如何重定向“http://domain.com”。使用 Nginx 到“http://domain.com”?
推荐的方法是什么?正则表达式还是有其他选择?
【问题讨论】:
标签: nginx
以下 sn-p 以一般方式执行此操作,而无需对任何主机名进行硬编码(如果您的服务器配置处理多个域的请求,则很有用)。将此添加到您需要的任何服务器定义中。
if ($http_host ~ "\.$" ){
rewrite ^(.*) $scheme://$host$1 permanent;
}
这利用了事实(Igor Sysoev 指出)$host 删除了尾随点,而 $http_host 没有;这样我们就可以匹配$http_host 中的点并自动使用$host 进行重定向。
【讨论】:
rewrite ^(.*) $scheme://$host$1 permanent; 摆脱硬编码方案。
$http_host 仍然包含尾随点,所以这个解决方案应该仍然有效。
您将需要使用正则表达式。
server {
listen 80;
server_name domain.com.WHATEVER, domain.com.WHATEVER-2, domain.com.WHATEVER-3;
rewrite ^ $scheme://domain.com$request_uri? permanent;
}
发件人:http://wiki.nginx.org/HttpRewriteModule
redirect - 返回带有代码 302 的临时重定向;如果替换行以 http:// 开头,则使用它 永久 - 返回带有代码 301 的永久重定向
【讨论】: