NGINX之删除 .com 后的双斜线

mengfanrong 阅读:6 2024-02-27 23:08:18 评论:0

我有几个双斜杠,我无法让我的 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 之后它们似乎都可以正常工作。谢谢!

请您参考如下方法:

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

如果您正常使用 nginx,则不会出现 nginx 规范化 URI 的行为(即,它将几个相邻的斜杠压缩为一个,解码 URL 并解析相对路径)。

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

所以下面的部分永远不需要

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


标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号