Codeigniter路由控制器子文件夹

Phi*_*Web 3 controller routes codeigniter

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

/controller/site.php (for webpages)
/controller/admin/ (for controllers to manage cms)
Run Code Online (Sandbox Code Playgroud)

在routes.php我写道:

$route['(:any)'] = "site/$1";
$route['admin/(:any)'] = "admin/$1";
Run Code Online (Sandbox Code Playgroud)

我有这样设置的文件.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]
Run Code Online (Sandbox Code Playgroud)

和config.php上的这个变量:

$config['index'] = '';
Run Code Online (Sandbox Code Playgroud)

但它只适用于"网站".例如,如果我写"mywebsite/admin/login",则返回404错误.

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

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

sto*_*ain 10

admin路线放在路线前any:

$route['admin/(:any)'] = "admin/$1";
$route['(:any)'] = "site/$1";
Run Code Online (Sandbox Code Playgroud)

否则它将始终命中any并重定向到site.在匹配admin之前你必须给它一个匹配的机会any.