Nginx URL重写:匹配含特殊字符路径节点的正则写法求助
Nginx URL重写:匹配含特殊字符路径节点的正则写法求助
嘿,我来帮你搞定这个Nginx重写的问题!你遇到的核心问题是正则表达式里特殊字符的解析逻辑——+在正则里是个量词,代表前面的字符可以出现1次或多次,所以你之前写的^/foo+(/.*)$其实匹配的是/fo、/foo、/fooo这类路径,而不是你想要的字面量/foo+。
给你两个可行的解决方案:
方案一:转义特殊字符
把+用反斜杠\转义,让正则引擎把它当作普通字符处理,对应的rewrite指令如下:rewrite ^/foo\+(/.*)$ $1 break;这样就能精准匹配以
/foo+开头的路径,捕获后面的/bar/file/test.txt部分,重写后就得到你想要的目标URL了。方案二:使用字符集包裹特殊字符
正则里的字符集[]内部的特殊字符会被当作字面量解析,所以也可以这样写:rewrite ^/foo[+](/.*)$ $1 break;这个写法和方案一效果完全一致,看你个人习惯选择就行。
你可以把上面任意一种写法放到你的Nginx配置里测试,应该就能解决你的问题啦!
备注:内容来源于stack exchange,提问作者Pahan
相关产品推荐
相关产品推荐

