Codeigniter路线冲突

时间:2013-06-09 23:00:48

标签: 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/show/$1";

当我删除(.*)路由(或两者)时,我的do_login函数成功运行。但不是我的api-index函数,因为Codeigniter将MongoId作为函数名并失败。

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

你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:1)

反转routes的顺序,CodeIgniters路线的优先顺序。

你寻求这种结构:

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

也使用(:any)代替(.*) 它们是相同的。

CodeIgniter Routing

答案 1 :(得分:0)

这里是工作路线。

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