日期:2014-05-17  浏览次数:20899 次

apache mod_rewrite无法匹配?问号解决办法

apache在mod_rewrite上处理?

?

问号有点特别,用转义\?,RewriteCond %{QUERY_STRING} ^(.+)$没效果,

?

例如:http://open.XXX.net/api/users/show?uid=215538,25201

重写到'http://open.XXX.net/api?api_name=users_show&uid=215538,25201'。直接匹配不出来

SQL代码

?RewriteRule ^api/(\w+)/(\w+)\?(.*) oauth/server/apicore.php?api_name=$1_$2&$3

?

在网上搜了很长时间,终于找了一篇 apache在mod_rewrite上处理?问号的相关文章,介绍了mod_rewrite手册的一个参数:

'qsappend|QSA'(追加查询字符串)

此标记强制重写引擎在已有的替换字符串中追加一个查询字符串,而不是简单的替换。如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。测试是是正确的

?

RewriteCond %{QUERY_STRING} ^(.*)$

?

RewriteRule ^api/(\w+)/(\w+)\?(.*) oauth/server/apicore.php?api_name=$1_$2&$3 [L,QSA]?