默认方法就是 index(),不能改名或绕过;访问 /、/controller 或 /controller/ 时自动调用 controller/index;控制器须定义 public index() 方法,类名首字母大写、URI 小写;index() 缺失则 404。

CodeIgniter 本身没有“配置默认方法”的独立设置项,所谓“默认方法”实际由 默认控制器 + 方法名约定 共同决定——框架始终尝试调用 index() 方法作为入口。只要控制器存在且 index() 方法可访问,它就是事实上的默认方法。
默认方法就是 index(),不能改名也不能绕过
CI 的路由机制硬编码了这一行为:当访问 /、/controller 或 /controller/ 时,框架自动补全为 controller/index 并调用该方法。你无法在配置中把它改成 home() 或 load()。
- 控制器中必须定义名为
index()的 public 方法,且首字母小写 - 类名必须首字母大写(如
Home),但 URI 中写小写(/home) - 如果
index()方法不存在,即使其他方法都正常,也会直接报 404
想让别的方法当“首页”?重定向或重映射更稳妥
如果你的业务逻辑主入口是 dashboard() 或 show_front(),不建议删掉 index()。正确做法是让它成为跳板:
- 在
index()方法里用redirect('controller/dashboard')跳转 - 或直接在
index()内部调用$this->dashboard();(需确保该方法是 public) - 高级用法:在控制器中定义
_remap()方法,统一拦截所有请求并按需分发,把非index的调用也导向你的主逻辑
子目录控制器也能用 index(),但默认路由不支持路径
比如你有 application/controllers/admin/Dashboard.php,它的 index() 方法可通过 /admin/dashboard 正常访问。但注意:CI3 不允许在 $route['default_controller'] 中写 'admin/dashboard',否则 404。
- 可行方案:把
Dashboard复制到根 controllers 目录,或建一个轻量级Welcome控制器,index()中重定向过去 - 不推荐修改系统 Router.php 来强行支持路径——升级易出问题,维护成本高
检查 index() 是否生效的三个关键点
出现 404 却以为是“默认方法没配对”,大概率卡在这三处:
- 控制器文件名是否小写(如
crud.php),而类名是否首字母大写(class Crud extends CI_Controller) - 文件中是否真有
public function index(),而不是只有savedata()或create() - 是否误删了
extends CI_Controller或漏写<?php开头,导致类未被识别


















