CodeIgniter配置routes.php后仍报404 Page Not Found错误
CodeIgniter 站点访问返回404错误修复方案
核心必改项(覆盖90%同类问题)
- 文件名与路径大小写合规校验
CodeIgniter 3.x对文件大小写敏感度极高,必须严格匹配规则:- 控制器
Crud.php必须存放在application/controllers/目录下,文件名首字母大写,禁止命名为crud.php/CRUD.php - 模型
Crud_model.php必须存放在application/models/目录下,文件名首字母大写,禁止全小写命名 - 视图
insert.php存放在application/views/目录下即可
- 控制器
- 补全默认访问方法
现有Crud控制器仅定义了savedata()方法,缺少默认路由自动调用的index()方法,访问根路径时直接触发404。如果需要根路径直接展示注册表单,在控制器中新增如下方法:
未新增该方法前,可先访问public function index() { $this->load->view('insert'); }http://你的域名/index.php/Crud/savedata验证控制器是否正常加载。 - 修正基础URL配置
config.php中$config['base_url']留空会导致路径解析异常,必须填写实际站点访问地址,结尾必须带斜杠,本地开发示例:$config['base_url'] = 'http://localhost/你的项目目录名/';
重写规则排查(对应已部署的.htaccess文件)
- 确认.htaccess存放位置:必须放在项目根目录,与
application、system文件夹同级,不能放在application目录内 - 替换为CI标准重写规则,直接覆盖现有.htaccess内容测试:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> - 确认Apache服务已开启
mod_rewrite重写模块,模块未开启时所有重写规则不生效,必然返回404 - 重写规则验证生效后,将
config.php中$config['index_page']的值改为空字符串:$config['index_page'] = '';
其他关联问题修复(不影响404但会导致后续功能异常)
- 模型文件开头缺少安全限制行,在
Crud_model.php开头补充如下代码,避免非法路径访问:defined('BASEPATH') OR exit('No direct script access allowed'); - 视图中联系号码输入框的name属性写错,当前重复写为
name="email",需改为name="contactnumber",否则提交表单时无法获取联系方式字段值 - 数据库配置中库名为
tsa2,模型中写入的表名为TSA2exam,需提前确认该表确实存在于对应数据库中,避免后续插入数据报错
验证流程
按以下顺序测试可快速定位问题点:
- 先访问带
index.php的地址http://你的域名/index.php/Crud/savedata,如果能正常打开表单,说明控制器、模型加载逻辑正常,问题出在重写规则或base_url配置 - 如果带
index.php的地址仍返回404,优先检查文件存放路径、文件名大小写,确认控制器是否补全了必要的类结构 - 带
index.php访问正常后,再测试去掉index.php的路径,逐项排查.htaccess规则、重写模块状态
内容的提问来源于stack exchange,提问作者MalkynRei
相关产品推荐
相关产品推荐

