
CodeIgniter 报“404 Page Not Found”通常并非路由配置错误,而是因未定义 index() 方法或未正确映射默认访问路径所致;本文将结合实际代码,系统讲解如何定位并修复该问题。
codeigniter 报“404 page not found”通常并非路由配置错误,而是因未定义 `index()` 方法或未正确映射默认访问路径所致;本文将结合实际代码,系统讲解如何定位并修复该问题。
在 CodeIgniter 中,当浏览器访问根路径(如 http://localhost/your-project/)时,框架会依据 routes.php 中的 $route['default_controller'] 设置,自动调用对应控制器的 index() 方法——这是框架的硬性约定。即使你已将默认控制器设为 'Crud',若 Crud 类中没有定义 public function index(),请求仍将触发 404 错误。
观察你的 routes.php:
$route['default_controller'] = 'Crud';
这等价于 Crud/index。但当前 Crud.php 中仅定义了 savedata() 方法,缺少 index() 方法,因此框架找不到可执行的入口,直接返回 404。
✅ 正确解决方案(二选一)
方案一:添加 index() 方法(推荐)
在 Crud.php 中补充 index() 方法,作为默认入口,并重定向或直接加载视图:
// 在 Crud 类中新增
public function index()
{
// 可选择重定向到 savedata 页面
redirect('crud/savedata');
// 或直接加载插入表单(更直观)
// $this->load->view('insert');
}⚠️ 注意:使用 redirect() 需确保已加载 URL 辅助函数(可在 __construct() 中添加 $this->load->helper('url');),或在 config/autoload.php 中预加载。
方案二:修改默认路由指向具体方法
若你希望根路径直接访问 savedata 功能,可显式指定方法名:
// routes.php $route['default_controller'] = 'Crud/savedata';
此时访问 http://localhost/your-project/ 将直接执行 Crud::savedata(),无需 index() 方法。
? 其他关键检查点(避免连锁 404)
控制器文件名与类名严格匹配
确保文件名为 Crud.php(首字母大写),且类声明为 class Crud extends CI_Controller —— CodeIgniter 3+ 要求控制器文件名与类名完全一致(大小写敏感)。URL 访问路径需带 index.php(除非已启用 Apache 重写)
你的 .htaccess 若未生效,应通过以下 URL 测试:
http://localhost/your-project/index.php/crud/savedata
若此路径可访问,说明是 .htaccess 或 Apache mod_rewrite 未启用问题,而非路由本身错误。base_url() 输出验证
在 insert.php 中,action="<?= base_url() ?>Crud/savedata" 应生成形如 /your-project/index.php/Crud/savedata 的路径。若 base_url() 返回空字符串,请检查 config.php 中是否设置了正确的 $config['base_url'](例如:$config['base_url'] = 'http://localhost/your-project/';)。-
数据库连接确认
虽然不影响路由,但 savedata() 中调用了 $this->load->database()。建议在 __construct() 中添加异常捕获:try { $this->load->database(); } catch (Exception $e) { show_error('Database connection failed: ' . $e->getMessage()); }
✅ 最终验证步骤
- 启动服务器,访问 http://localhost/your-project/index.php/
- 若显示插入表单 → 问题已解决
- 若仍 404 → 检查 Apache 日志、logs/error_log,确认是否报 Class 'Crud' not found(文件名/路径错误)或 Undefined method index()(缺失方法)
遵循以上逻辑,90% 的“看似配置正确却 404”问题均可快速定位。核心原则始终是:CodeIgniter 默认控制器必须提供 index() 方法,或通过路由显式绑定到具体方法。

















