【问题标题】:Nginx - Redirect Domain Trailing DotNginx - 重定向域尾随点
【发布时间】:2013-03-05 08:14:41
【问题描述】:

如何重定向“http://domain.com”。使用 Nginx 到“http://domain.com”?

推荐的方法是什么?正则表达式还是有其他选择?

【问题讨论】:

标签: nginx


【解决方案1】:

以下 sn-p 以一般方式执行此操作,而无需对任何主机名进行硬编码(如果您的服务器配置处理多个域的请求,则很有用)。将此添加到您需要的任何服务器定义中。

if ($http_host ~ "\.$" ){
    rewrite ^(.*) $scheme://$host$1 permanent;
}

这利用了事实(Igor Sysoev 指出)$host 删除了尾随点,而 $http_host 没有;这样我们就可以匹配$http_host 中的点并自动使用$host 进行重定向。

【讨论】:

  • 使用rewrite ^(.*) $scheme://$host$1 permanent; 摆脱硬编码方案。
  • 感谢@SlavaFominII 的建议(和编辑)——好多了。
  • 在 1.10 Nginx 中,尾随点不在 $host 或 $http_host 中。
  • 我没有测试 Nginx 1.10,但是使用this excellent answer,我测试了 1.18,$http_host 仍然包含尾随点,所以这个解决方案应该仍然有效。
【解决方案2】:

您将需要使用正则表达式。

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 的永久重定向

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2023-01-30
    • 2014-01-13
    • 2021-12-25
    • 1970-01-01
    • 2017-12-03
    • 2017-07-14
    相关资源
    最近更新 更多