CodeIgniter 4 路由修改不生效是因为路由缓存未清除,需执行 php spark cache:clear 清空缓存并运行 php spark routes 验证路由是否注册成功,再检查 Apache 重写配置与 DocumentRoot 是否正确指向 public 目录。

CodeIgniter路由缓存开启后修改不生效,是因为框架在首次加载时已将路由规则编译并写入缓存文件,后续对Routes.php的改动不会自动重载——你改了代码,但CI仍在用旧缓存跑。
确认路由缓存是否已启用
打开 app/Config/Routes.php,查找是否存在 $routes->setCache(true) 或类似调用。若无此行,则当前未启用路由缓存,问题根源不在缓存,需排查其他配置。
CodeIgniter 4 默认不启用路由缓存,只有显式调用 setCache(true) 才会激活;若你从未手动开启,却遇到“改了路由不生效”,大概率是 Apache 重写未生效或 .htaccess 被忽略。
清除路由缓存文件
执行命令删除缓存目录下的所有路由相关文件:
进入项目根目录 → 运行 php spark cache:clear
这一步会清空整个缓存体系,包括路由、配置、视图等。它比手动删文件更可靠,因为 CI4 的缓存路径可能受 WRITEPATH 影响,而 WRITEPATH 在 public/index.php 初始化时才确定,直接删 application/cache/ 可能删错位置。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
【必须执行此步后再验证】 否则即使你改了 Routes.php,spark routes 命令仍会显示旧路由列表。
重新生成并验证当前路由
第一步:运行 php spark routes 查看终端输出的全部有效路由列表,确认 /home、/product 等路径是否已出现在其中;
第二步:若未出现,检查 Routes.php 中对应行是否被注释、拼写错误(如 Home::indxe)、或写在了 $routes->setAutoRoute(false) 之后却未加 get() 方法声明;
第三步:访问 http://localhost/home,观察是否返回 404;若仍 404,且 spark routes 已显示该路由,则说明请求未到达 CI 入口——此时应立即检查 Apache mod_rewrite 是否启用、.htaccess 是否位于 public/ 目录、DocumentRoot 是否指向 public/ 子目录。


















