ici 发表于 2010-7-19 23:29:40

url路由的一个问题

$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)']把有可能对程序造成影响的一些不合法参数全部过滤了?
这个用作对参数的处理可以不?大家都是怎么做的?
谢谢

visvoy 发表于 2010-7-20 09:37:46

用_remap不就得了,尽量少让程序跑正则
CI对这种page/1有内置的解决办法:
http://codeigniter.org.cn/user_guide/general/controllers.html#remapping

haohailuo 发表于 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错误

ici 发表于 2010-7-20 10:10:51

首先请理解$route['page/(:num)']的意思,(:num)的正则只是整型数字,而你访问的地址



并不符合规则,你 ...
haohailuo 发表于 2010-7-20 09:39 http://codeigniter.org.cn/forums/images/common/back.gif
多谢,明白这块的意思了。

ici 发表于 2010-7-20 10:28:24

用_remap不就得了,尽量少让程序跑正则
CI对这种page/1有内置的解决办法:
visvoy 发表于 2010-7-20 09:37 http://codeigniter.org.cn/forums/images/common/back.gif

$route['page/(:num)'] ='abc/def/$1';
按照上边的例子,版主的意思是在abc控制器里写一个_remap()方法,然后再检查这个方法?
没想明白意思...
谢谢

visvoy 发表于 2010-7-20 11:14:54

你进那个链接看看,像这种xx.com/page/123类型的url,CI有内部处理方案不用搞路由
function _remap($pageNumber){
if(is_int($pageNumber){
    $this->分页
}
}

ici 发表于 2010-7-20 12:10:56

你进那个链接看看,像这种xx.com/page/123类型的url,CI有内部处理方案不用搞路由
function _remap($pageNu ...
visvoy 发表于 2010-7-20 11:14 http://codeigniter.org.cn/forums/images/common/back.gif
有点明白了

常规的结构是 控制器/方法/参数
xxx.com/page/123这种结构是 控制器/参数 形式的
这种结构,_remap就可以解决了,而不用uri路由去处理了。
版主是这个意思吧?

visvoy 发表于 2010-7-20 12:56:23

湿的
页: [1]
查看完整版本: url路由的一个问题