【问题标题】:Codeigniter Routes Controller Sub FolderCodeigniter 路由控制器子文件夹
【发布时间】: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 但不起作用。

谁能帮我解决这个问题?

【问题讨论】:

    标签: codeigniter controller routes


    【解决方案1】:

    admin 路由放在any 路由之前:

    $route['admin/(:any)'] = "admin/$1";
    $route['(:any)'] = "site/$1";
    

    否则它将始终点击any 并重定向到site。在匹配 any 之前,您必须给它一个匹配 admin 的机会。

    【讨论】:

    • 非常感谢!我已经解决了这个问题!没想到改变顺序会造成这么多麻烦。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2012-12-06
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多