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

CodeIgniter配置About控制器后访问页面报404找不到Ivy::codeignitor错误求解

问题原因

你遇到的404报错是路由解析异常导致的,核心有以下几个错误点:

  • 控制器存放路径和命名空间不匹配:你列出的目录结构中Controllers目录下是About文件夹,而你的About控制器命名空间为App\Controllers,对应的文件应该直接放在app/Controllers目录下,命名为About.php,如果放在子文件夹中会导致CI自动路由找不到对应控制器。
  • 基础URL配置错误:app/Config/App.php中的$baseURL没有配置为你实际的项目根地址http://localhost:8080/myproject/,导致路由解析路径偏移。
  • 路由规则优先级错误:如果你的app/Config/Routes.php中存在前置的通配符路由规则(例如类似$routes->get('(:any)', 'xxx::$1')的规则),会优先匹配通配符规则,导致about路径被解析到其他控制器。
  • 站点根目录配置错误:CodeIgniter4默认入口文件在public目录下,如果你直接把项目根目录作为站点根目录访问,会导致路径解析混乱。

解决步骤

  1. 修正控制器存放位置
    将你的About.php控制器文件直接放到app/Controllers目录下,确保文件首字母大写,和类名保持一致。如果你确实需要将控制器放在Controllers/About子目录中,需要做如下修改:

    • 控制器命名空间改为namespace App\Controllers\About;
    • 在app/Config/Routes.php中添加路由规则:
    $routes->get('about', 'About\About::index');
    
  2. 修正基础配置
    打开app/Config/App.php修改两个配置项:

// 替换为你实际的项目根地址
public $baseURL = 'http://localhost:8080/myproject/';
// 适配htaccess的路径解析规则
public $uriProtocol = 'REQUEST_URI';
  1. 调整路由规则顺序
    打开app/Config/Routes.php,所有通配符规则必须放在具体路由规则的后面,避免优先级过高拦截正常路径。默认开启自动路由的情况下不需要额外添加about路径的规则。

  2. 修正站点根目录配置(可选)
    推荐将apache/nginx的站点根目录指向项目的public目录,如果不方便修改,可以将public目录下的index.php和.htaccess文件移动到项目根目录,同时修改index.php中的路径引用:

// 原代码
$pathsPath = FCPATH . '../app/Config/Paths.php';
// 修改为
$pathsPath = FCPATH . 'app/Config/Paths.php';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:03