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