我正在编写一个url rewrite regex来查找每个斜线对之间有破折号的字符串,例如,
/aaa-bb/cc/dd-ee-ff/gg
应与aaa-bb
和dd-ee-ff
匹配。如果网址包含/test/
,我需要它匹配任何内容,因此对于网址/aaa-bb/cc/test/dd-ee-ff/gg
,它应该不匹配。我写了一个正则表达式
/\w+-(\w+(?!\.)-?)+
它会发现所有字符串都包含-
,但我无法添加/test/
部分的模式。
答案 0 :(得分:1)
据我所知,正则表达式无法维持一个状态,因此你应该将你正在做的事情分成两个单独的检查,在测试检查中嵌套破折号检查。
if(!hasTest) {
//check for dashes
}
答案 1 :(得分:1)
紧接在包含正则表达式的RewriteRule之前,添加重写条件以排除其中包含子字符串/test/
的网址。 RewriteCond看起来像:
RewriteCond %{REQUEST_URI} !/test/
RewriteRule /\w+-(\w+(?!\.)-?)+ /some_place_else.html?parameters=$1