RewriteCond不匹配,而字面意思应该

时间:2012-11-14 09:01:26

标签: regex mod-rewrite

目标是从

进行重定向
/Swiss+Military/something..

/Swiss+Military+Hanowa/something..

我试过了:

RewriteCond %{REQUEST_URI} /Swiss+Military/(.*)
RewriteRule .* /Swiss+Military+Hanowa/%1 [R=301,L]

在9级重写日志会显示以下内容:

RewriteCond: input='/Swiss+Military/' pattern='/Swiss+Military/(.*)' => not-matched

我无法弄清楚为什么它不匹配.. 有什么想法吗?

已解决 - 需要在模式中逃脱+标志(我怎么没有提醒自己)

修改 对于这种情况甚至有更好的解决方案(我没有在开头放置,因为它没有用 - 与发布的原因相同) - 只有一个RewriteRule:

RewriteRule /Swiss\+Military/ /Swiss+Military+Hanowa/ [R=301,L]

1 个答案:

答案 0 :(得分:0)

RewriteCond对模式使用Perl语法。这意味着模式中的“+”表示“匹配1或更多”(前一个字符)。尝试通过在它前面放一个斜杠来逃避模式中的“+”:'\ +'。