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
相关产品推荐
相关产品推荐

