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

 apache在mod_rewrite上处理?问号有点特别,用转义\?,RewriteCond %{QUERY_STRING} ^(.+)$没效果,由于第九街博客后台改版采用了新框架,路由和现在的博客的地址不同,为了不丢失以前收录的流量页面,必须要转换当前路径路由,例如:http://www.9streets.cn/index.php?con=art&act=default&id=355重写到http://www.9streets.cn/art.php?id=355。直接匹配不出来

SQL代码
  1. RewriteRule ^(.*)art\.php[^a_z]id[^a_z]([0-9]+)$ /index.php?con=art&act=default&id=$2  

在网上搜了两天,郁闷了两天,终于找了一篇 apache在mod_rewrite上处理?问号的相关文章,介绍了mod_rewrite手册的一个参数:

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

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

 

SQL代码
  1. RewriteCond %{QUERY_STRING} ^(.*)$
  2. RewriteRule ^(.*)art\.php$ /index.php?con=art&act=default&id=$2 [L,QSA]  

顺便说一下将要改版内容:主要针对后台改动,以前用的是模板smarty,现改为MVC框架,方便以后维护,首页将采用PHP读缓存的方式,加快网页加载速度,近期将会上线


文章如转载,请注明:转载自:第九街-PHP[http://www.9streets.cn/]
本文链接地址:
发布者:9streets于 2011-09-29 发表 | 我要评论(2) | 阅读次数(725)

转播到腾讯微博


首页第九街博客由来关于博主联系博主免责条款隐私保护九街项目流程 | 网站地图 | 申请友情链接