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代码
- 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代码
- RewriteCond %{QUERY_STRING} ^(.*)$
- RewriteRule ^(.*)art\.php$ /index.php?con=art&act=default&id=$2 [L,QSA]
顺便说一下将要改版内容:主要针对后台改动,以前用的是模板smarty,现改为MVC框架,方便以后维护,首页将采用PHP读缓存的方式,加快网页加载速度,近期将会上线
本文链接地址:
发布者:9streets于 2011-09-29 发表
| 我要评论(2) | 阅读次数(725)





