You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter4子文件夹路由报错:控制器或方法无法找到(404)

CodeIgniter4路由404问题解决

问题根源

你的控制器文件目录层级是app/Controllers/Admin/Access/Departments.php,但控制器的命名空间只声明到App\Controllers,未包含Admin\Access层级;同时路由中引用控制器时的命名空间大小写和实际目录不匹配(目录是大写开头的Admin/Access,路由里用了小写admin\Access),导致框架找不到对应的控制器类。

修复步骤

1. 修正控制器的命名空间

修改Departments.php的命名空间,使其与目录结构完全对应:

<?php

namespace App\Controllers\Admin\Access;
use App\Controllers\BaseController;

class Departments extends BaseController
{
    public function index()
    {
        echo 'departments';
    }
}

2. 修正路由配置

两种可选的正确路由配置方式:

方式一:嵌套路由组+命名空间简化

$routes->group('admin', ['namespace' => 'App\Controllers\Admin'], static function($routes) {
    $routes->group('access', ['namespace' => 'App\Controllers\Admin\Access'], static function($routes) {
        $routes->group('departments', static function($routes) {
            $routes->get('/', 'Departments::index');
        });
    });
});

方式二:直接指定完整命名空间的路由

$routes->get('admin/access/departments', 'App\Controllers\Admin\Access\Departments::index');

关键注意点

  • CodeIgniter4对命名空间和目录的大小写严格匹配,目录是Admin/Access,命名空间和路由中就要用Admin\Access,不能写成小写的admin\access。
  • 路由组的namespace参数可以帮你省略重复的命名空间前缀,减少拼写错误。

内容的提问来源于stack exchange,提问作者Combinu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:51:01