tp6.1.2多应用模式下路由文件必须置于app/{name}/route.php,如app/index/route.php;放错位置(如route/route.php、app/route.php等)会导致404或控制器找不到,需按应用拆分、重命名、匹配命名空间并清缓存验证。

TP6.1.2 多应用模式下,路由文件放错位置会导致路由不生效、404 或控制器找不到,核心原因是框架按约定路径自动加载路由,且多应用模式下每个应用的路由必须独立存放、不能混用。
确认正确的路由文件位置
在开启 think-multi-app 扩展后,每个应用(如 index、admin)需有自己独立的路由定义文件,标准路径是:
-
app/index/route.php—— 对应 index 应用的路由 -
app/admin/route.php—— 对应 admin 应用的路由 - 不支持把所有路由写在
route/route.php(这是单应用模式的旧路径) - 也不允许把路由放在
app/common/route.php或根目录route/下(多应用模式下会被忽略)
常见放错位置及修正方法
以下几种错误最典型,直接对应修复即可:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
误放在
route/route.php:删掉该文件,把内容剪切到对应应用的app/{name}/route.php中 -
放在
app/route.php(应用根目录):移动到app/{name}/route.php,并确保{name}与实际应用名一致(如admin) -
多个应用共用一个 route.php:必须拆分,每个应用单独一份,命名空间和路由前缀也需匹配应用名(例如
admin应用的路由默认走/admin/xxx) -
文件名不是
route.php(比如叫routes.php或web.php):重命名为route.php,框架只识别这个名字
检查命名空间与应用标识是否匹配
每个 app/{name}/route.php 文件开头无需声明命名空间,但内部定义的控制器类路径必须与应用一致。例如:
-
app/admin/route.php中写Route::get('login', 'admin/Login::index'); - 对应控制器必须是
app\admin\controller\Login,而非app\index\controller\Login - 若用数组式写法,如
['admin/Login', 'index'],也要确保类存在且命名空间正确
验证是否生效
改完后清空缓存再测试:
- 执行
php think clear清除全部缓存 - 访问
http://yourdomain.com/admin/login(假设是 admin 应用)看是否能命中 - 用
php think route:list查看当前已加载的路由,确认目标路由出现在对应应用分组下










