用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4106|回复: 4
收起左侧

[已解决] 把book.php?id=311重定向到新地址book/id/311的方法

[复制链接]
发表于 2013-1-30 14:24:57 | 显示全部楼层 |阅读模式
    把网站老的程序用CI重写了一遍,因为CI的地址习惯很符合我的胃口,所以就用book/id/311这样的地址来显示我的商品信息。
    但是,之前很多人微博推广或者是引用的时候,都是用类似于book.php?id=311这样的格式,我该怎么办呢。

    直接Apache的rewrite可以搞定,但是直接写RewriteRule 发现$1无法把参数值311带过去,经过互联网搜索终于找到了方法。以下是具体配置
  1. RewriteEngine On
  2. RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
  3. RewriteRule /book.php /book/id/%1  [PT]
复制代码

    上面配置的要点有三个
1、要用RewriteCond 你可以把它理解为PHP的if语句
2、要知道QUERY_STRING是啥,在普通地址里面 ?后面那一串都是,例如book.php?id=311的QUERY_STRING结果就是 id=311
3、在RewriteRule里面,要引用我们的参数值311,就要用 %1 注意不是 $1。

   做到以前三点,目的就达到了。
发表于 2013-1-30 14:55:19 | 显示全部楼层
router.php
发表于 2013-1-31 23:12:22 CI中国手机版 | 显示全部楼层
感谢分享!其实扩展下router.php也是可以的来自: iPhone客户端
 楼主| 发表于 2013-2-1 21:01:59 | 显示全部楼层
hex,同样需求,routes.php里面怎么写,愿闻其详。
发表于 2013-2-8 15:22:28 | 显示全部楼层
相知犹按剑 发表于 2013-2-1 21:01
hex,同样需求,routes.php里面怎么写,愿闻其详。

愿闻其祥

本版积分规则