必须安装think-multi-app扩展并删除app/controller目录,再用php think build命令生成index/admin应用,最后配置domain_bind实现隔离——任一环节缺失均导致404或进入默认app。

要在ThinkPHP 8.0项目中让前台(index)、后台(admin)和API服务彼此隔离运行,且各自拥有独立路由、控制器与中间件,必须完成多应用模式的完整开启流程——跳过任意一步,访问子目录或子域名时都会直接报404或进入默认app应用。
安装并启用多应用扩展
进入项目根目录,执行命令安装官方多应用支持扩展:
composer require topthink/think-multi-app
安装完成后,框架会自动注册服务提供者;若使用的是精简版TP8或手动修改过config/app.php,需检查providers数组末尾是否已包含\think\multi\AppServiceProvider::class。未添加会导致后续所有应用识别失效。
这一步不可跳过:ThinkPHP 8.0默认不内置多应用能力,【不装这个扩展,整个多应用流程就无法启动】。
清理默认单应用结构
删除项目根目录下的app/controller目录:
rm -rf app/controller
Windows用户请用资源管理器直接删除该文件夹,不要尝试保留它并新建子目录——框架检测到app/controller存在,就会强制进入单应用模式,完全忽略domain_bind等配置。
这一步是触发框架切换至多应用识别的关键开关,不是可选项。
生成独立应用骨架
使用ThinkPHP内置命令创建index和admin两个应用:
php think build index → php think build admin
执行后,app/目录下将生成两个子目录:app/index/ 和 app/admin/,每个目录内含controller/、model/、view/、route/等标准MVC子结构。
ThinkPHP 6.0.0 是国产轻量级 PHP 框架的里程碑式版本,于 2019 年正式发布。该版本基于“精简核心”与“统一用法”原则,对底层架构进行了彻底重构。它强制要求 PHP 7.1+ 环境,全面启用强类型声明,深度支持 PSR 规范,并引入了独立的多应用模式、改进的中间件机制及全新的事件系统,标志着 ThinkPHP 正式迈入现代化、标准化与企业级开发的新阶段。
注意:不能手动新建文件夹或复制粘贴,必须用php think build命令生成——否则缺少初始化路由文件route.php及命名空间声明,后续路由加载会静默失败。
配置域名与应用绑定
打开config/app.php,在return数组中添加或修改以下三项:
'auto_multi_app' => true,
'app_map' => ['think' => 'admin'],
'domain_bind' => ['tp8.test' => 'index', 'admin.tp8.test' => 'admin'],
其中domain_bind是实际生效的路由分发依据:当请求Host头为admin.tp8.test时,框架自动加载app/admin/下的全部逻辑;tp8.test则指向app/index/。务必确保你的本地hosts已添加对应解析,或DNS已配置好这两个域名指向本机。
【domain_bind键名必须与真实HTTP请求中的Host头完全一致,大小写敏感,不能带http://或端口】。
验证子应用路由是否加载
方法一:在app/index/route/route.php中添加测试路由:
Route::get('test-index', function () { return 'index app works'; });
方法二:在app/admin/route/route.php中添加:
Route::get('test-admin', function () { return 'admin app works'; });
然后分别访问http://tp8.test/test-index 和 http://admin.tp8.test/test-admin。两个地址都返回对应字符串,说明多应用路由已正确隔离加载。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










