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

CodeIgniter 3.1.x子文件夹控制器路由配置404错误求助

解决CodeIgniter 3.1.x中Admin子文件夹控制器的路由404问题

遇到这种路由404的情况,大概率是命名规范、配置或者路由规则的小细节没处理好,我帮你梳理几个关键排查点和解决方法:

1. 严格遵守控制器的命名规范

CodeIgniter 3对控制器的文件名和类名有明确要求:

  • 控制器文件名必须是小写,比如你的dashboard.php是符合要求的
  • 控制器类名必须是首字母大写的驼峰命名,且必须继承CI_Controller,示例代码如下:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Dashboard extends CI_Controller {

    public function getUsers() {
        // 这里写你的业务逻辑,比如返回用户信息
        echo "获取用户数据成功";
    }
}

如果类名写成全小写的dashboard,CI会无法识别控制器,直接返回404。

2. 检查路由规则的正确性及优先级

你的路由规则$route['getUsersInfo'] = "Admin/dashboard/getUsers";格式是正确的,但要注意两个细节:

  • 这条路由必须放在application/config/routes.php文件中,不要放在自定义的路由文件里(除非你手动加载了该文件)
  • 确保这条路由没有被前面的规则覆盖,比如如果前面有$route['(:any)'] = "welcome/index";这类通配路由,会优先匹配,导致你的自定义路由失效,需要把你的路由放在通配路由之前。

3. 验证直接访问控制器方法是否正常

先跳过路由,直接访问控制器的方法,测试是否能正常响应:

  • 未开启URL重写时,访问地址为:http://你的域名/index.php/Admin/Dashboard/getUsers
  • 开启URL重写后,访问地址为:http://你的域名/Admin/Dashboard/getUsers
    如果直接访问也返回404,说明问题不在路由,而是控制器本身的位置或命名错误,回到第一步重新检查。

4. 检查CodeIgniter核心配置

打开application/config/config.php,确认两个关键配置:

  • $config['base_url']:必须正确设置为你的网站根URL,比如http://localhost/your_ci_project/,不要留空
  • $config['index_page']:如果开启了URL重写(用.htaccess去掉index.php),这里要设置为空字符串'',否则保留'index.php'

5. 确认URL重写(.htaccess)配置正确(如果使用的话)

如果想去掉URL里的index.php,需要在项目根目录(和index.php同层级)创建.htaccess文件,内容如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

同时要确保你的Apache服务器开启了mod_rewrite模块,否则URL重写不生效,访问不带index.php的地址会返回404。

按照以上步骤排查,基本就能解决这个路由404的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:49