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

[已解决] Rewrite后取值的问题

[复制链接]
发表于 2011-1-28 15:19:24 | 显示全部楼层 |阅读模式
RewriteCond $1 !^(1\.php)
RewriteRule ^(.*)1\.php?(.*)$ /a/b?$2 [L]

执行 1.php?xx=123  Rewrite到 /a/b?xx=123  

$this->input->get('xx');  取不出值  那位高手帮忙给看看 谢谢 :)
发表于 2011-1-28 19:27:15 | 显示全部楼层
CI 默认不支持 GET 传参。
如果要打开,请参考FAQ置顶帖。
发表于 2013-1-30 18:32:23 | 显示全部楼层
这个问题的关键是?后面的参数的取值问题,我今天刚刚研究出来。贴出我的帖子内容,参考一下吧。
把网站老的程序用CI重写了一遍,因为CI的地址习惯很符合我的胃口,所以就用book/id/311这样的地址来显示我的商品信息。
    但是,之前很多人微博推广或者是引用的时候,都是用类似于book.php?id=311这样的格式,我该怎么办呢。

    直接Apache的rewrite可以搞定,但是直接写RewriteRule 发现$1无法把参数值311带过去,经过互联网搜索终于找到了方法。以下是具体配置
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
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。

   做到以前三点,目的就达到了。

本版积分规则