Codeigniter 路由控制器子文件夹
Posted
技术标签:
【中文标题】Codeigniter 路由控制器子文件夹【英文标题】:Codeigniter Routes Controller Sub Folder 【发布时间】:2013-09-16 21:49:07 【问题描述】:我的路由和控制器有问题。我有两种控制器:第一种用于管理网页,第二种用于 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】:将admin
路由放在any
路由之前:
$route['admin/(:any)'] = "admin/$1";
$route['(:any)'] = "site/$1";
否则它将始终点击any
并重定向到site
。在匹配 any
之前,您必须给它一个匹配 admin
的机会。
【讨论】:
非常感谢!我已经解决了这个问题!没想到改变顺序会造成这么多麻烦。再次感谢!以上是关于Codeigniter 路由控制器子文件夹的主要内容,如果未能解决你的问题,请参考以下文章