所以我已经设置了我的路由如下:
$route[':any'] = "main";
$route['products/(:any)'] = "products/product/$1";
例如www.mysite.com/something转到主控制器,在那里我处理"某些东西"。对于产品,我也是这样处理的。
但是你可以看到,之后我必须写下所有其他控制器的方法,我希望使用而不是主控制器。是否有一种方法可以自动检测控制器是否存在,使用控制器而不是默认的"main"?
$route['products'] = "products";
$route['admin/user/login'] = "admin/user/login";
$route['admin/user/logout'] = "admin/user/logout";
$route['admin/migrations'] = "admin/migrations";
$route['admin/dashboard'] = "admin/dashboard";
我不能把它的功劳,因为我发现它在某个地方的博客,但我使用以下代码在我的路由。php,在你的情况下,我会把它上面的$route[':any'] = "main";
$controller_dir = opendir(APPPATH."controllers");
while (($file = readdir($controller_dir)) !== false) {
if (substr($file, -4) == ".php" ) {
$route[substr($file, 0, -4)."(.*)"] = substr($file, 0, -4)."$1";
} elseif (substr($file, -5) == ".php/") {
$route[substr($file, 0, -5)."(.*)"] = substr($file, 0, -5)."$1";
}
}
如果我需要覆盖它们中的任何一个,或者有任何唯一的路由,我把它们放在routes.php文件的顶部,在这段代码之上。