0

我有两个控制器 1- 站点 2- 管理

第一个控制器(站点)工作成功,第二个控制器(管理)不工作。

我不知道是什么错误

我更改了 routes.php 但仍然不起作用(管理)

$route['default_controller'] = "site";
$route['(:any)'] = "site/$1";
$route['Administration'] = "Administration/index";
$route['Administration/([a-z])'] = 'Administration/$1';

此链接有效:

example.com/hotel/12312

example.com/contact

example.com/city/newyork

example.com/Administration

但是这个链接不起作用:

example.com/Administration/hotels

example.com/Administration/add_new

example.com/Administration/cities

请问问题出在哪里,因为我厌倦了解决这个问题

谢谢

4

3 回答 3

4

这与您给出路线指令的顺序有关。代码点火器从上到下路由请求,因此如果您希望 $route['Administration'] 位于 $route['(:any)'] 之前,则必须先设置它。

$route['default_controller'] = "site";
$route['Administration/([a-z])'] = 'Administration/$1';
$route['Administration'] = "Administration/index";
$route['(:any)'] = "site/$1";

我总是建议将 (:any) 路线放在最后,这样它们就不会覆盖更具体的路线。

于 2012-10-31T12:25:08.020 回答
2

我遇到了同样的问题,我得到了这个工作:

$route['default_controller'] = "welcome";
$route['([a-z-A-Z1-9_]+)'] = "site";
$route['management']="management";
$route['404_override'] = '';

它可以帮助你!

于 2012-10-31T16:07:11.703 回答
0

我不熟悉 Codeigniter 路由,但在我看来,一切都$route['(:any)'] = "site/$1";在到达您的管理路由之前匹配。尝试将其移至其他所有内容下方...您可能还必须切换管理路线([a-z])以匹配

$route['default_controller'] = "site";
$route['Administration/([a-z])'] = 'Administration/$1';
$route['Administration'] = "Administration/index";
$route['(:any)'] = "site/$1";
于 2012-10-31T12:22:09.523 回答