当我想要匹配包含空格的 URL 时,空格可能会编码为 %20
或 +
。为了在 Nginx 正则表达式中匹配它,我需要使用什么模式?
Nginx 是否按原样传递 URL?
(?:%20|\+| )
或者,Nginx 是否首先执行一些取消引用或取消转义的操作?
(?:\+|)
或者+
是否标准化?
最佳答案
虽然我快速浏览了一下 Nginx 文档并没有找到任何引用资料,但从我的测试来看,Nginx 将 HTTP 代码规范化为 unicode,使得“%20”与“\s”匹配。 '+' 已经在 unicode 中,不需要标准化。
例如。 /route/the%20test
应与(?:\s)
但是,我倾向于使用更安全的方法,并使用类似以下内容的内容:(?:(\s|\%20))
关于regex - Nginx 在匹配之前是否取消引用/转义 URL 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127087/