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

如何在CodeIgniter 4中启用自动路由?配置后访问控制器出现404错误的求助

解决CodeIgniter 4启用自动路由后出现404的问题

你已经按文档开启了自动路由的相关配置,但还是遇到404,大概率是控制器的命名规范或者路由规则没匹配上,我帮你梳理几个关键检查点:

1. 严格遵守控制器的命名与位置规则

当autoRoutesImproved启用时,CI4对控制器的要求更严格:

  • 控制器文件必须放在app/Controllers目录下,文件名首字母必须大写,比如Pages.php(不能是pages.php)
  • 控制器类名要和文件名完全一致,同样首字母大写,并且继承BaseController,示例代码:
    <?php namespace App\Controllers;
    
    class Pages extends BaseController
    {
        // 必须存在index方法,否则访问不带方法名的URL会404
        public function index()
        {
            return "Hello from Pages controller!";
        }
    }
    

2. 确认BaseURL配置正确

打开app/Config/App.php,检查$baseURL是否和你的访问路径匹配:

public string $baseURL = 'http://localhost/codeigniter4/';

如果这里设置错误,路由解析会出现偏差,导致404。

3. 理解autoRoutesImproved模式下的访问规则

启用改进版自动路由后,URL的匹配规则是:
[你的BaseURL]/[控制器名小写]/[方法名小写]

  • 你访问的http://localhost/codeigniter4/pages,对应的是Pages控制器的index方法(默认方法),所以这个index方法必须存在于控制器中
  • 如果你的控制器里是其他方法,比如show(),那对应的访问URL应该是http://localhost/codeigniter4/pages/show

4. 检查是否有自定义路由冲突

查看app/Config/Routes.php中是否有提前定义的自定义路由,比如:

$routes->get('pages', 'Home::index');

自定义路由的优先级高于自动路由,如果有这类规则,会直接覆盖你的自动路由,导致404。

5. 清除路由缓存(如果开启过)

如果你之前使用过路由缓存,新的配置不会立即生效,需要清除缓存:

  • 命令行运行:php spark route:clear
  • 或者手动删除writable/cache/routes.php文件

先从控制器命名和BaseURL这两个最常见的问题查起,应该就能解决你的404问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:13:10