5

当我想匹配带有空格的 URL 时,空格可能被编码为%20+。为了在 Nginx 正则表达式中匹配这个,我需要使用什么模式?

Nginx 是否按原样传递 URL?

(?:%20|\+| )

或者,Nginx 会先做一些取消引用或取消转义吗?

(?:\+| )

还是+归一化?

4

1 回答 1

1

虽然我没有快速浏览 Nginx 文档中的任何参考资料,但从我的测试来看,Nginx 将 HTTP 代码标准化为 unicode,使得 '%20' 与 '\s' 匹配。'+' 已经在 unicode 中,不需要进行规范化。

例如。/route/the%20test

应与(?:\s)

但是,我倾向于倾向于更安全的一面并使用类似的东西:(?:(\s|\%20))

于 2013-01-02T22:12:17.833 回答