【发布时间】:2015-01-25 16:53:39
【问题描述】:
(?i)^/(dima|oleg)/([-a-z0-9]+)[.]+([-a-z0-9]+)[.]+(by|kz|ru)(((?<!/)/[-a-z0-9._\~\%\!\$\&\'\(\)\*\+\,\;\=\:\@]*)*)(\.php)((\?)(.*)?)?$
我使用这个正则表达式来重写 url。它用双斜杠抑制网址。您可以在 regex101.com 上对其进行测试。工作正常。但是,当我在 access.log 中向我的 NGINX 服务器提供带有双斜杠的 url 时,我可以看到刚刚提供的 url,因为它带有双斜杠,并且我得到了请求的资源(例如 .js 文件)。但由于 url 中的双斜杠,我预计会出现 404 错误。问题是:为什么会发生这种情况?
【问题讨论】:
-
Web 服务器内置了“忽略”这种双斜杠的自动机制(Apache 的反应方式相同)。
-
是的,nginx 有一个选项 merge_slashes