访问根路径/时默认进入指定应用和控制器,需按TP5/TP6版本、单/多应用模式及路由/配置/入口三层级分别设置:多应用下配config/app.php的default_app;全局fallback设config/route.php的default_module等参数;最推荐显式路由Route::get('/', 'Index/index');入口文件临时干预仅作调试备用。

ThinkPHP 设置默认应用和默认控制器,要分清版本(TP5/TP6)、部署模式(单应用 or 多应用)以及生效层级(路由层、配置层、入口层)。核心目标是:访问根路径 / 时,不报 404,直接进入你指定的应用和控制器。
一、多应用模式下设默认应用
适用于 ThinkPHP 6(需安装 topthink/think-multi-app)或 TP5 的多模块结构。默认应用决定 URL 无前缀时加载哪个应用(如 /user/list → index 应用,而非 admin)。
- 编辑
config/app.php - 设置
'default_app' => 'index'(值为应用目录名,如app/index/) - 确保
'app_express' => true(启用路径自动解析) - 若使用子域名,还需配
APP_SUB_DOMAIN_DEPLOY和APP_SUB_DOMAIN_RULES
二、统一设置默认控制器与操作
无论单应用还是多应用,只要没走显式路由,都可通过全局路由参数兜底。该配置影响所有未匹配路由的“最后 fallback”行为。
- 打开
config/route.php - 在
return []数组中添加:
‘default_controller’ => ‘Index’,
‘default_action’ => ‘index’,
‘url_route_must’ => false
-
default_module在多应用中一般对应默认应用名;单应用中可忽略或设为'' -
url_route_must => false必须开启,否则严格模式下该配置不生效
三、显式绑定根路径路由(推荐首选)
最清晰、最可控的方式:直接告诉框架 “/ 就等于访问某个控制器方法”。适用于所有版本,优先级高于默认参数。
- 在
config/route.php中添加:
Route::get('/', 'Index/index');
- 若控制器在其它应用(如
admin),写成Route::get('/', 'admin/Index/index') - 执行
php think route:clear清除路由缓存 - 该方式不依赖模块配置,也不受
url_route_must影响,强烈建议作为主方案
四、入口文件临时干预(调试备用)
当路由配置未生效、或服务器环境异常(如 PATH_INFO 丢失)时,可在入口文件中手动补全调度参数。
- 编辑
public/index.php - 在
think\App::run()执行前插入:
$_GET['s'] = '/index/index';
}
- 注意:此逻辑必须放在
require __DIR__ . '/../vendor/autoload.php';之后、App::run()之前 - 仅作兜底,不宜长期依赖
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











