Codeigniter路由控制器子文件夹

时间:2013-09-12 13:17:36

标签: codeigniter controller routes

我遇到了路由和控制器的问题。我有两种类型的控制器:第一种类型用于管理网页,第二种类型用于cms,我更喜欢将它们放在子文件夹中。例如:

/controller/site.php (for webpages)
/controller/admin/ (for controllers to manage cms)
在routes.php中的

我写道:

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

我已经以这种方式设置了.htacces文件:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css|js|font|woff|ttf|svg|eot|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

和config.php上的这个变量:

$config['index'] = '';

但它仅适用于“网站”。例如,如果我写“mywebsite / admin / login”,则返回404错误。

我发现MY_Router也扩展了CI_Route但不起作用。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:9)

admin路线放在any路线前:

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

否则它将始终点击any并重定向到site。在匹配admin之前,您必须给它一个匹配any的机会。