think-multi-app 多应用模式下怎么配置才生效?
在 thinkphp 6 的多应用模式下,要让 think-multi-app 插件真正生效,核心是确保入口文件正确加载了应用实例,并在 app.php 中注册了该中间件。具体做法是修改 public/index.php,使用 app::run() 替代默认的 http::run(),同时在 config/app.php 的 middleware 数组中添加 \think\multiapp\multiapp。这样框架就能根据 url 自动识别并路由到对应的应用目录。

如何验证多应用路由是否已正确加载?
验证多应用模式是否生效,最直接的方法是检查应用目录结构是否被正确解析,以及路由规则是否按应用隔离。可以通过创建一个简单的测试控制器,访问不同应用的 URL 路径(如 /index/index/hello 和 /admin/index/hello)来确认请求是否被分发到了正确的应用命名空间下。如果返回 404 或路由错误,通常是因为中间件未注册或入口文件未修改。

<?php // public/index.php use think\App; // 加载基础文件 require __DIR__ . '/../vendor/autoload.php'; // 执行 HTTP 运行 App::run();
上述代码是 ThinkPHP 6 多应用模式的标准入口。关键点在于引入了 think\App 类并调用其 run() 方法,而不是传统的 Http::run()。这会让框架进入多应用检测流程。配合 config/app.php 中的中间件配置,系统会自动判断当前请求属于哪个应用。
基于 app.php 中 middleware 配置的具体问题
在 config/app.php 文件中,必须将 \think\multiapp\MultiApp 添加到 middleware 数组中。这个中间件负责解析 URL 中的应用前缀,并将请求重定向到对应的应用目录。如果遗漏这一步,即使入口文件正确,框架也会默认进入 app 根目录,导致多应用失效。
// config/app.php
return [
// ... 其他配置
'middleware' => [
\think\multiapp\MultiApp::class,
// 其他中间件
],
];
这段配置确保了每个 HTTP 请求在进入控制器之前,都会经过 MultiApp 中间件的过滤。它会检查 URL 路径,提取应用名称(如 index、admin),然后动态加载对应应用下的 route、controller 等资源。这是多应用模式生效的关键步骤。


















