从具有多个控制器的URL隐藏Codeigniter控制器名称

时间:2012-02-15 22:38:22

标签: codeigniter url controller

我在routes.php中使用以下代码来隐藏URL结构中的控制器名称:

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

它的效果很好,但我的问题是:当我想访问另一个控制器时,它似乎将其视为隐藏控制器的一个功能。

所以举个例子。我有

http://mysite.com/controller1/somefunction

变成:

http://mysite.com/somefunction

如果我想访问该怎么办:

http://mysite.com/jsonfunction/anotherfunction/

如何在保持另一个控制器隐藏的同时访问另一个控制器?我真的不希望访客看到http://mysite.com/maincontroller/只是多余的!

1 个答案:

答案 0 :(得分:2)

我担心你必须更具体地定义你的路线。 你仍然可以使用:

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

但它可能会转到您的路线列表中的按钮。

如果你想要添加其他路线,那么你必须将它们置于最重要的位置。 例如:

$route['login'] = "auth/login";
$route['varY'] = "controllerX/varY";
$route['varY/(:any)'] = "controllerX/varY/$1";
$route['foobar'] = "controller/method";
$route['(:any)'] = "auth/$1";

有关更多信息和未来参考,请参阅此文档: http://codeigniter.com/user_guide/general/routing.html