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

[已解决] url路由的一个问题

[复制链接]
发表于 2010-7-19 23:29:40 | 显示全部楼层 |阅读模式
$route['page/(:num)'] =  'abc/def/$1';
定义了之后,下面这些url形式全部显示的404
http://127.0.0.2/page
http://127.0.0.2/page/abc
http://127.0.0.2/page/5.6
http://127.0.0.2/page/-6
$route['page/(:num)']把有可能对程序造成影响的一些不合法参数全部过滤了?
这个用作对参数的处理可以不?大家都是怎么做的?
谢谢
发表于 2010-7-20 09:37:46 | 显示全部楼层
用_remap不就得了,尽量少让程序跑正则
CI对这种page/1有内置的解决办法:
http://codeigniter.org.cn/user_g ... lers.html#remapping
发表于 2010-7-20 09:39:07 | 显示全部楼层
首先请理解$route['page/(:num)']的意思,(:num)的正则只是整型数字,而你访问的地址
http://127.0.0.2/page/abc
http://127.0.0.2/page/5.6
http://127.0.0.2/page/-6
并不符合规则,你访问的地址http://127.0.0.2/page 并没有符合条件的路由规则,不作处理,但你不存在page控制器,所以肯定会出现404错误
 楼主| 发表于 2010-7-20 10:10:51 | 显示全部楼层
首先请理解$route['page/(:num)']的意思,(:num)的正则只是整型数字,而你访问的地址



并不符合规则,你 ...
haohailuo 发表于 2010-7-20 09:39

多谢,明白这块的意思了。
 楼主| 发表于 2010-7-20 10:28:24 | 显示全部楼层
用_remap不就得了,尽量少让程序跑正则
CI对这种page/1有内置的解决办法:
visvoy 发表于 2010-7-20 09:37


$route['page/(:num)'] =  'abc/def/$1';
按照上边的例子,版主的意思是在abc控制器里写一个_remap()方法,然后再检查这个方法?
没想明白意思...
谢谢
发表于 2010-7-20 11:14:54 | 显示全部楼层
你进那个链接看看,像这种xx.com/page/123类型的url,CI有内部处理方案不用搞路由
function _remap($pageNumber){
  if(is_int($pageNumber){
    $this->分页
  }
}
 楼主| 发表于 2010-7-20 12:10:56 | 显示全部楼层
你进那个链接看看,像这种xx.com/page/123类型的url,CI有内部处理方案不用搞路由
function _remap($pageNu ...
visvoy 发表于 2010-7-20 11:14

有点明白了

常规的结构是 控制器/方法/参数
xxx.com/page/123这种结构是 控制器/参数 形式的
这种结构,_remap就可以解决了,而不用uri路由去处理了。
版主是这个意思吧?
发表于 2010-7-20 12:56:23 | 显示全部楼层
湿的

本版积分规则