我有一些双斜线我无法将我的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之后立即工作。谢谢!
答案 0 :(得分:0)
真正的问题是:您最终是如何使用此类网址?
如果您正常使用nginx,则不会出现nginx规范化URI的行为(即它将在一个中压缩多个相邻的斜杠,解码URL并解析相对路径)。
正在处理的当前请求的URI的规范化结果存储在$uri
变量中。
所以永远不需要以下部分。
if ($request_uri ~ "//") {
return 301 $uri;
}