请查看我的codeigniter config / routes.php文件中的内容:
$route['default_controller'] = "primary";
$route['404_override'] = '';
$route['(:any)'] = 'primary';
$route['login'] = 'login';
$route['admin'] = "admin";
$route['admin/(:any)'] = 'admin/$1';
所以,我几乎要将任何页面请求定向到我的'主'控制器,在那里它将由index()函数处理。有一些例外;登录进入登录,admin进入管理员。这一切都很好。问题出在最后一条规则上,它似乎没有按预期工作; 'admin / whatever'只是被路由回我的主控制器。为什么呢?
我实际上想要正常路由任何管理员请求,因此 admin / whatever / 会转到 admin / whatever / , admin / whatever / whatever / 转到 admin / whatever / whatever / 。可能存在许多细分,并且列出单个规则的次数太多(需要作为第一个 $ route ['(:any)'] ='primary'; 规则的例外情况。有没有办法做到这一点?
我对codeigniter很新,所以如果答案非常明显,请道歉。我花了最后几个小时来寻找答案,但找不到任何答案。
答案 0 :(得分:2)
路由也应按段数排序,因此'admin /(:any)'应该在'admin'之前。在规则'admin /(:any)'中,(:any)似乎可以引用任意数量的后续段。
我现在有:
$route['admin/(:any)'] = 'admin/$1';
$route['login/(:any)'] = 'login/$1';
$route['login'] = 'login';
$route['admin'] = "admin";
$route['(:any)'] = 'primary';
它工作正常。
答案 1 :(得分:0)
除非您想要将管理员/其他内容重写为其他内容,否则将删除最后一条规则和管理员/应该转到管理员/无论如何在管理员控制器中有任何功能