我遇到了路由和控制器的问题。我有两种类型的控制器:第一种类型用于管理网页,第二种类型用于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但不起作用。
有人可以帮我解决这个问题吗?
答案 0 :(得分:9)
将admin
路线放在any
路线前:
$route['admin/(:any)'] = "admin/$1";
$route['(:any)'] = "site/$1";
否则它将始终点击any
并重定向到site
。在匹配admin
之前,您必须给它一个匹配any
的机会。