htaccess没有按预期重写!

时间:2011-02-04 11:07:47

标签: apache .htaccess mod-rewrite

RewriteRule ^coaching/complete\sin\s\(30\smin,\s1\shour...\)    

http://www.example.com/coaching/complete+in+%2830+min-+1+hour...%29-11

预期输出

 http://www.example.com/coaching/complete+in+(30+min-+1+hour...)-11

然而它输出为

  

http://www.example.com/coaching/complete+in+830+min-+1+hour...9-11

我的代码中有什么问题?

2 个答案:

答案 0 :(得分:1)

%2是mod-rewrite中的参考值,因此当您尝试使用%28%29作为大括号时,是错误的。尝试使用()

答案 1 :(得分:1)

问题是%2实际上被mod_rewrite解释为对最后匹配的RewriteCond模式的第二组匹配的反向引用。

如果没有这样的引用,它只是扩展为空字符串。

所以你首先要逃避这样的百分比字符:

RewriteRule ^coaching/complete\sin\s\(30\smin,\s1\shour...\) http://www.example.com/coaching/complete+in+\%2830+min-+1+hour...\%29-11

但是,如果你真的希望这些字符在输出url中显示,你还需要使用[NE]标志,否则mod_rewrite会将它们转换为'('和')'。

相关问题