CodeIgniter 3 路由在 CI4 中不适用,因自动映射机制被替换为显式声明,需重写所有路由规则、调整控制器命名与命名空间,并指定HTTP方法。

不适用。CodeIgniter 3 的路由规则在 CI4 中基本无法直接使用,因为两者路由机制完全不同。
核心差异:自动映射 vs 显式声明
CI3 默认启用“自动路由”:只要 URL 是 /控制器名/方法名(如 /home/index),框架会自动查找 Home.php 控制器并调用 index() 方法,无需手动写路由规则。
CI4 默认关闭自动路由($routes->setAutoRoute(false)),所有请求必须在 app/Config/Routes.php 中显式定义——没有对应规则,就直接 404。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
常见 CI3 路由写法在 CI4 中的失效情况
-
$route['default_controller'] = 'welcome';→ CI4 不识别该语法;应改用$routes->get('/', 'Welcome::index'); -
$route['products'] = 'products';→ CI4 不支持字符串简写;必须写成$routes->get('/products', 'Products::index'); -
$route['product/(:num)'] = 'products/detail/$1';→ CI4 语法不同,需改为$routes->get('/product/(:num)', 'Products::detail/$1');,且类名首字母必须大写、命名空间必须正确 - 省略
index方法的隐式调用(如/home自动找Home::index)→ CI4 不再默认支持,必须明确写出方法名
迁移时必须同步调整的三项
-
控制器命名规范:CI4 要求文件名和类名首字母大写(
Home.php→class Home),CI3 对大小写容忍度更高 -
命名空间声明:CI4 控制器必须声明
namespace App\Controllers;,CI3 无此概念 -
HTTP 方法限定:CI4 的
$routes->get()、$routes->post()等需按需指定,CI3 的路由默认接受所有方法
兼容性替代方案(不推荐长期使用)
若想临时保留部分 CI3 风格行为,可在 app/Config/Routes.php 开头启用自动路由:
$routes->setAutoRoute(true);
但这仅恢复基础的 /控制器/方法 映射,不支持 CI3 的 $route 数组语法,也不推荐用于生产环境——违背 CI4 的安全与可维护设计原则。


















