Codeigniter 代码点火器路由冲突

Codeigniter 代码点火器路由冲突,codeigniter,codeigniter-url,codeigniter-routing,Codeigniter,Codeigniter Url,Codeigniter Routing,我正在使用codeigniter创建restapi,我在路由方面遇到了一些问题 以下是方程式: 我必须导航/users/到索引函数 我必须导航到/users/{MongoId}到/users/show/{MongoId} 我必须将/users/function导航到/users/function 这里是我的路线: $route['api/users/do_login'] = "api/users/do_login"; $route['api/users/(.*)'] = "api/users/s

我正在使用codeigniter创建restapi,我在路由方面遇到了一些问题

以下是方程式:

我必须导航
/users/
到索引函数

我必须导航到
/users/{MongoId}
/users/show/{MongoId}

我必须将
/users/function
导航到
/users/function

这里是我的路线:

$route['api/users/do_login'] = "api/users/do_login";
$route['api/users/(.*)'] = "api/users/show/$1";
当我删除
(.*)
路由(或两者)时,我的do\u登录功能会成功工作。但不是我的api索引函数,因为Codeigniter将MongoId作为函数名,但失败了

当我写回(或两者都写回)时,我的索引函数成功地工作,但我的登录没有成功。 因为它试图发送函数名以将函数显示为参数


你能帮我解决这个问题吗?

颠倒
路线的顺序
CodeIgniters
路线优先

您寻求这种结构:

$route['api/users/(:any)'] = "api/users/show/$1";
$route['api/users/do_login'] = "api/users/do_login";
也可以使用
(:any)
而不是
(.*)
它们是相同的


这里是工作路线

$route['api/users/do_login/(:any)'] = "api/users/do_login/$1";
$route['api/users/(:any)'] = "api/users/show/$1";

哦,我问了这个问题之后,试了所有这些。但现在问题似乎更大了。我使用philsturgeon的codeigniter restserver,但这并不能拯救我。我想他在REST_控制器中使用了重新映射,我的路由总是返回404(无方法)。你有什么想法吗?试着在你自己的控制器中重新映射“…因为Codeigniter将MongoId作为函数名,但失败了”,或者这也是不可能的?我现在再次检查了它。当我使用您编写的路由并从他的类请求一些输出时,它说调用的方法名为“show_post”。这让我想到:任何一个街区都是另一个。无论如何,谢谢。如果它的ID使用
(:num)
,也可以。我认为它仍然没有像预期的那样工作。我深入研究RESTserver代码,找到了
\u remap()
。请求的url是什么?您可能会将路由更改为
'api/users/(:any)/(:any)
或类似的东西…(:num)不起作用。它不认为十六进制是数字。