2011-02-04 69 views
0
RewriteRule ^coaching/complete\sin\s\(30\smin,\s1\shour...\)  

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

总产值有望htaccess不能按预期重写!

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

是什么在我的代码的问题?

+0

请问您可以补充一下,您要重写什么网址(没有正则表达式,没有urlencoding) – aorcsik 2011-02-04 11:14:24

回答

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 

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

1

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