Codeigniter路由don';我不能正常工作

Codeigniter路由don';我不能正常工作,codeigniter,codeigniter-2,codeigniter-routing,Codeigniter,Codeigniter 2,Codeigniter Routing,我在路由配置中有两个字符串 $route['education/course/(:any)'] = "education/course/$1"; $route['education/course/(:any)/(:num)'] = "education/lection/$1/$2"; 但是当我进入/education/course/my_-course/1时,第一条规则起作用了,但第二条没有 请帮忙!我是CI的新手。路线按照定义的顺序运行。您的第二个将永远不会被应用,因为(:any)通配符正

我在路由配置中有两个字符串

$route['education/course/(:any)'] = "education/course/$1";

$route['education/course/(:any)/(:num)'] = "education/lection/$1/$2";
但是当我进入
/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
的页面与第一条路线模式(如下)匹配

此外,请求类似于
/education/course/my_course/1/23
的页面仍将匹配第一个路由模式,因为route.php只关心您请求的URL链接是否匹配指定的路由模式,否则请检查下一个路由

因此,切换路由顺序将解决问题

$route['education/course/(:any)'] = "education/course/$1";