问题描述
我有路由和控制器的问题。我有两种类型的控制器:第一种类型用于管理网页,第二种类型用于cms,我更喜欢把它们放在一个子文件夹。示例:
$ route ['admin /(:any)'] =admin / $ 1;
$ route ['(:any)'] =site / $ 1;
否则将始终命中任何到 site 。您必须给它一个匹配任何之前匹配 admin 的机会。
I've a problem with routes and controller. I've got 2 types of controller: first type is used to manage the webpages, second type is used for cms and I prefer to put them in a sub-folder. Example:
/controller/site.php (for webpages) /controller/admin/ (for controllers to manage cms)
in routes.php I've write:
$route['(:any)'] = "site/$1"; $route['admin/(:any)'] = "admin/$1";
I've got the file .htacces set in this way:
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]
and this variable on config.php:
$config['index'] = '';
but it works only for "site". If I write "mywebsite/admin/login" for example, it return 404 error.
I've found also MY_Router to extend CI_Route but doesn't work.
Can someone help me to resolve this problem ?
Put the admin route before the any route:
$route['admin/(:any)'] = "admin/$1"; $route['(:any)'] = "site/$1";
otherwise it will always hit any and redirect to site. You have to give it a chance to match admin before matching any.
这篇关于Codeigniter路由控制器子文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!