Nginx的Rewrite正则表达式,匹配非某单词 由于要rewrite一个地址从 /mag/xx/xxx/ -> /m/xxx 但原先 /mag/xx/more/ 要保留 这就得写一个比较奇特的正则了,尝试了比较多的写法也没成功 最先想的是: location ~* ^/mag/[^/]+/[^(more)]+/ { rewrite ^/mag/[^/]+/(.*) /m/$1 permanent; } []的写法并不凑效,里面是匹配单个字符的,这样无效,匹配不了 还是小范同学不错,研究的深入,提供了非某单词的写法 (?!more) location ~* ^/mag/[^/]+/(?!more)([^/]+)/ { rewrite ^/mag/[^/]+/(.*) /m/$1 permanent; } 这个写法勉强可以应付了,后面的匹配单元虽说还不完美,但也能够对付我的所有需求内容了。 有需要的可以参考此写法。 常用分组语法 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?’name’exp) (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 零宽断言 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (? …