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

CodeIgniter 4配置路由后报404页面未找到问题的解决方法

CodeIgniter 4 路由配置后访问404修复方案

按以下优先级逐个排查即可解决问题:

  • 修正路由规则的匹配逻辑与顺序
    CI4 内置的(:any)占位符仅匹配不含斜杠的单段URI,无法匹配多段路径,且通配规则必须放在所有路由的最末尾,避免拦截其他正常路由。将原路由配置替换为以下内容:
    // 首页单独配置,解决根路径访问时空参数导致的404
    $routes->get('/', 'Pages::view');
    // 通配所有单段/多段路径,放在所有路由规则最后
    $routes->get('(.*)', 'Pages::view/$1');
    
    如果修改路由后配置不生效,在项目根目录执行php spark route:clear清除路由缓存即可。
  • 校验控制器的命名、路径与命名空间
    控制器文件必须存放在app/Controllers/Pages.php路径,注意文件名首字母大写,类定义必须符合CI4规范,基础结构不能缺失:
    <?php
    
    namespace App\Controllers;
    // 不要漏写继承BaseController,缺这步会直接触发404
    class Pages extends BaseController
    {
        public function view($page = 'home')
        {
            if (! is_file(APPPATH . 'Views/pages/' . $page . '.php')) {
                throw new \CodeIgniter\Exceptions\PageNotFoundException($page);
            }
    
            $data['title'] = ucfirst($page);
    
            return view('templates/header', $data)
                . view('pages/' . $page)
                . view('templates/footer');
        }
    }
    
    Linux环境下文件名大小写敏感,禁止将文件命名为小写的pages.php,否则会直接找不到控制器。
  • 校验视图文件路径
    代码中判断的视图路径为app/Views/pages/,必须手动在app/Views目录下创建名为pages的全小写文件夹,内部放入对应视图文件:比如访问/about需要存在app/Views/pages/about.php文件,访问首页需要存在app/Views/pages/home.php文件,否则代码会主动抛出404异常。同时要保证templates目录下存在header.php和footer.php两个模板文件,否则加载视图时也会报错。
  • 检查Web服务器的重写规则
    如果是Apache环境:
    • 确认public目录下的官方默认.htaccess文件没有被删除
    • 确认Apache已开启mod_rewrite重写模块,虚拟主机配置中AllowOverride设置为All,允许重写规则生效
      如果是Nginx环境,需要在站点配置中添加路径转发规则,将不存在的静态文件请求全部转发到CI入口文件:
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    配置完成后重启Web服务器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:20:03