我在htaccess RewriteRule中使用什么正则表达式来匹配URI中的%?

时间:2011-11-08 21:05:03

标签: regex .htaccess mod-rewrite

当用户将其输入浏览器时: http://cauzoom.com/collection/something0%d 我希望他们最终来到这里: http://cauzoom.com/collection/index.html?pname=something

我当前的htaccess重写规则如下所示:

RewriteRule ^collection/([a-z0-9\-\%]+)$ collection/index.html?pname=$1 [NC,L]

......但那失败了。当我这样做时:

RewriteRule ^collection/(.+)$ collection/index.html?pname=$1 [NC,L]

......它也失败了。我知道%是一个受保护的正则表达式字符,但把文字“\”放在它前面应该可以工作,对吧?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

%不是正则表达式元字符,问题是它用于对URL中的字符进行编码,因此您不能只在URL中使用文字%,因为它意味着要启动标识特殊字符的序列:reference

如果您希望在网址中包含真实%,则必须将其编码为%25