2014-11-21 54 views
2

我有一些双斜杠我无法让我的nginx.conf文件重写为单斜杠。我能够得到它改写大多数双斜线的,比如我可以得到http://domain.com/feature//feature-name/http://domain.com/feature/feature-name/NGINX - 删除.com后的双斜杠

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

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

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

回答

0

真正的问题是:你是如何得到这样的URL

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

来自当前正在处理的请求的URI的标准化结果存储在$uri变量中。

因此,下面的部分不应该是必要的

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