当我想匹配其中包含空格的网址时,空格可能会被编码为%20
或+
。为了在Nginx正则表达式中匹配这个,我需要使用什么模式?
Nginx是否按原样传递了URL?
(?:%20|\+| )
或者,Nginx会先做一些不引用或不进行的操作吗?
(?:\+| )
或+
是否已正常化?
答案 0 :(得分:1)
虽然我在Nginx文档中没有找到任何引用,但是在我的测试中,Nginx将HTTP代码规范化为unicode,使'%20'与'\ s'匹配。 '+'已经是unicode,不需要标准化。
EG。 /route/the%20test
应与(?:\s)
但是,我倾向于依靠更安全的方面并使用类似:(?:(\s|\%20))