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

[HELP] 急急急!新手求助一个关于CI路由的问题!

[复制链接]
发表于 2014-10-22 17:10:39 | 显示全部楼层 |阅读模式
本帖最后由 jiyi_1990 于 2014-10-23 12:50 编辑

各位大大们好,小弟初来CI大家族,现公司有个项目的url路由有个问题,麻烦大家帮忙看下,谢谢啦!~

下面是有问题的路由配置规则
PHP复制代码
$route['news/(:num)/(:num).html'] = 'news/news_lastest_by_year/$1/$2';
复制代码

$1是传递时间参数(2012,2013.....),$2是传递分页的参数(第1页,第2页.....)

现在当我url为xxx/news/2014/1.html的时候 此路由无效,但是xxx/news/2014/2.html的时候正常,也就是说page变量在0和1的时候匹配不到。
现在把url路由改成
PHP复制代码
$route['news/(:num)'] = 'news/news_lastest_by_year/$1/$2';
复制代码
的时候就能匹配到url为xxx/news/2014/1.html,但是匹配不到其他的,

也就是说我想实现xxxx/news/2014/1.html和xxxx/news/2014/2.html  这样的的规则必须上面两条一起用才行!


请问这是什么原因呢?我应该如何去解决?下面还有个三个变量的路由匹配,也是这样的问题,谢谢大家了!!!{:soso_e185:}

-----------------------------------------------------------------------------------------------------------------------------------------------------忘记说了,最重要的,我去跟踪时候发现,路由根本匹配不到,
当我url为http://xxxx.com/news/category/2013/1.html的时候,CI框架的router.php 获取的method变量为category
当我url为http://xxxx.com/news/category/2013/2.html的时候,CI框架的router.php 获取的method变量为news



也就是说根本没走这路由,知己CI的路由判断了method不是news 就找不到控制器了!
发表于 2014-10-22 19:19:33 | 显示全部楼层
匹配不到应该是前面的路由匹配到了。
发表于 2014-10-23 08:11:25 | 显示全部楼层
所有路由信息都贴出来看看
发表于 2014-10-23 09:46:29 | 显示全部楼层
不是路由不匹配, 是因为你程序内没有处理好page这个问题... 在获取page时候1一般是不作用的  所以需要你判断一下.
发表于 2014-10-23 10:14:13 | 显示全部楼层
经测试,代码没问题。。。。

http://localhost/ci/index.php/news/2014/1.html
输入:2014------------1

http://localhost/ci/index.php/news/news_lastest_by_year/2014/1
输出:2014------------1
发表于 2014-10-23 10:17:00 | 显示全部楼层
順便問一下,他的後參數要怎麼承接呢?
因為我目前是用 GET 的方式
所以不曉得這種 $1 $2 該如何使用
 楼主| 发表于 2014-10-23 12:41:56 | 显示全部楼层
IvanCI 发表于 2014-10-23 09:46
不是路由不匹配, 是因为你程序内没有处理好page这个问题... 在获取page时候1一般是不作用的  所以需要你判 ...

可是路由匹配不到,怎么去判断呢?
 楼主| 发表于 2014-10-23 12:42:27 | 显示全部楼层
一叶扁舟 发表于 2014-10-23 08:11
所有路由信息都贴出来看看

路由全都注释了 只留下这两个了!~
 楼主| 发表于 2014-10-23 12:43:29 | 显示全部楼层
阿呆 发表于 2014-10-23 10:14
经测试,代码没问题。。。。

http://localhost/ci/index.php/news/2014/1.html

咦?你是只留了一个路由匹配?就可以匹配到吗?我现在已经改了分页符的连接方式,把/改成了-

本版积分规则