ThinkPHP6路径返回首页主因是Web服务器未将请求转发至index.php,需检查Nginx/Apache重写规则、public目录为根目录、PATH_INFO正确提取、路由开关开启及缓存清除。

ThinkPHP6获取当前页面路径返回首页,通常不是代码写错了,而是请求根本没进到框架的路由解析环节——它被Web服务器直接拦下来,转给了默认首页处理。
检查Web服务器是否把请求交给了index.php
这是最常见原因。如果访问/user/list返回首页,但/index.php/user/list能正常打开,说明Nginx或Apache没做重写转发。
- Nginx配置里
location /块中必须有try_files $uri $uri/ /public/index.php?$query_string;(注意是/public/index.php,不是/index.php) - 确认网站根目录设的是项目下的
public/目录,不是整个项目根目录 - Apache用户检查
public/.htaccess是否生效:AllowOverride All要在虚拟主机配置里开启 - 宝塔用户别直接套用“ThinkPHP”伪静态模板,那是TP5风格,TP6必须改目标路径为
/public/index.php
确认PATH_INFO是否正确提取
即使进了public/index.php,如果$_SERVER['PATH_INFO']为空,框架就无法识别/user/list这段路径,只能走默认逻辑(通常是首页)。
- 在
public/index.php开头加var_dump($_SERVER['PATH_INFO']);die;,访问/user/list看输出是不是/user/list - Nginx需配置
fastcgi_split_path_info ^(.+\.php)(/.*)$;,并确保fastcgi_param PATH_INFO $fastcgi_path_info;存在且位置正确 - 删掉
location ~ \.php$里可能存在的try_files $uri =404;,它会提前终止请求
验证路由开关和缓存状态
框架内部没启动路由,也会导致所有路径都 fallback 到首页。
立即学习“PHP免费学习笔记(深入)”;
- 检查
config/app.php中'app_route' => true是否为布尔值true,不是字符串"true"或被注释 - 多应用模式下,要检查对应子应用(如
app/admin/config/app.php)里的app_route设置 - 执行
php think route:clear清除路由缓存;APP_DEBUG = false时改了路由文件不清理缓存就无效 - 运行
php think route:list,如果输出为空,说明路由根本没加载
排除强制路由与静态资源干扰
开了url_route_must后,连/static/css/app.css都会走路由匹配,找不到就返回首页或404。
- 检查
config/route.php中'url_route_must' => true是否误开 - 若已开启,务必在
app/route/app.php顶部加放行规则:Route::rule(':path^.*\.(js|css|png|jpg|gif|svg|woff2|ttf)$', 'static/:path', 'GET'); - 确认
public/static/目录真实存在且可读,否则静态请求也会被路由机制捕获后失败



















