Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我想匹配带有空格的 URL 时,空格可能被编码为%20或+。为了在 Nginx 正则表达式中匹配这个,我需要使用什么模式?
%20
+
Nginx 是否按原样传递 URL?
(?:%20|\+| )
或者,Nginx 会先做一些取消引用或取消转义吗?
(?:\+| )
还是+归一化?
虽然我没有快速浏览 Nginx 文档中的任何参考资料,但从我的测试来看,Nginx 将 HTTP 代码标准化为 unicode,使得 '%20' 与 '\s' 匹配。'+' 已经在 unicode 中,不需要进行规范化。
例如。/route/the%20test
/route/the%20test
应与(?:\s)
(?:\s)
但是,我倾向于倾向于更安全的一面并使用类似的东西:(?:(\s|\%20))
(?:(\s|\%20))