我在路由配置中有两个字符串。
$route['education/course/(:any)'] = "education/course/$1";
$route['education/course/(:any)/(:num)'] = "education/lection/$1/$2";
但是当我去/education/course/my_course/1
时,第一条规则有效,但第二条规则没有。
请帮忙!我是CI的新手。
答案 0 :(得分:0)
路线按照定义的顺序运行。你的第二个永远不会被应用,因为(:any)通配符正在捕获,以及任何东西。
我相信您应该能够切换订单,因此最具体的是首先,然后是最不具体的:
$route['education/course/(:any)/(:num)'] = "education/lection/$1/$2";
$route['education/course/(:any)'] = "education/course/$1";
答案 1 :(得分:0)
由于前两个路段的两条路线相似
education / course / (:any)
由于Route.php运行程序(逐行),
请求类似/education/course/my_course/1
的页面匹配第一个路由模式(下面)
$route['education/course/(:any)'] = "education/course/$1";
而且,请求像/education/course/my_course/1/23
这样的页面仍然会匹配第一个路由pattrn,因为Route.php只关心您请求的URL链接是否与指定的路由模式匹配,否则请检查下一个路由。 / p>
因此,切换路线的顺序将解决问题。