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 路由控制器子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

路由到 CodeIgniter 中的多个子文件夹

在 CodeIgniter 中重新路由页面时如何防止重复内容?

CodeIgniter 路由文件夹错误

Codeigniter控制器和路由

CodeIgniter:从子文件夹访问视图

025.CI4框架CodeIgniter, URI路由功能之在Routes中添加分组路由