【问题标题】:NGINX - Remove double slash after .comNGINX - 删除 .com 后的双斜杠
【发布时间】:2014-11-21 22:19:48
【问题描述】:

我有几个双斜杠我无法让我的 nginx.conf 文件重写为单斜杠。我可以让它重写大部分双斜杠,例如我可以得到http://domain.com/feature//feature-name/http://domain.com/feature/feature-name/

if ($request_uri ~ "^[^?]*//") {
    rewrite "(.*)" $scheme://$host$1 permanent;
}

我遇到的问题是,如果我在 .com 之后立即有一个双斜杠,它不会重写为单斜杠。我遇到问题的两个例子是http://domain.com//http://domain.com//features/

我尝试过使用 merge_slashes 指令,以及其他各种重写。我只是不知道为什么他们似乎都在 .com 之后工作,除了。谢谢!

【问题讨论】:

    标签: nginx


    【解决方案1】:

    真正的问题是:你是怎么得到这样的网址的

    如果你正常使用 nginx,你不会得到这样的行为,因为 nginx 正在规范化 URI(即它将几个相邻的斜杠压缩为一个,解码 URL 并解析相对路径)。

    当前正在处理的请求的 URI 的规范化结果存储在 $uri 变量中。

    所以下面的部分永远是不必要的

    if ($request_uri ~ "//") {
        return 301 $uri;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2016-12-22
      相关资源
      最近更新 更多