先确认请求是否进入ThinkPHP框架:能访问/index.php/api/user说明框架正常,404则属伪静态未生效;再停用重写规则、运行php think route:list核对路由注册与路径匹配;最后检查app/route/app.php位置、use声明、前导斜杠及HTTP方法对应性。

路由规则写错,最怕的是盲目修改、反复试错。关键不是“怎么写对”,而是“怎么快速定位错在哪”。先绕过干扰项,确认请求是否真正进了框架,再一层层往下查。
第一步:确认请求有没有进到 ThinkPHP
打开浏览器,直接访问带 index.php 的完整路径,比如:http://your-site.com/index.php/api/user(或 /public/index.php/api/user)
- 能正常返回数据或页面 → 说明框架已加载,问题在路由定义本身
- 返回 500 或空白 → 检查 PHP 环境、runtime 目录权限、入口文件路径
- 返回 404(服务器原生错误,不是 TP 黄色报错页)→ 请求根本没进框架,问题出在 Web 服务器重写配置上
第二步:停用伪静态,排除重写干扰
别删规则,先临时禁用:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
-
Nginx:进宝塔「网站设置」→「配置文件」,找到
location / { ... }块,把里面的rewrite或if (!-e $request_filename)整段注释掉,换成最简兜底:try_files $uri $uri/ /index.php?$query_string;
保存后执行nginx -t && systemctl reload nginx -
Apache:进入项目根目录,把
.htaccess改名为.htaccess.bak,刷新页面即可跳过所有重写规则
第三步:检查路由注册是否生效
执行命令行指令查看当前所有已注册的路由:
- 运行
php think route:list - 对照你的请求:URL 是
/api/login,方法是 POST,就在输出列表里找 Rule 列匹配 且 Method 列含 POST 的那一行 - 没找到 → 路由没注册成功;找到了但 Rule 是
/api/login/(多斜杠)或大小写不一致 → 路径不匹配
第四步:核对路由文件位置与语法细节
ThinkPHP 6+ 路由必须写在正确位置,且语法不能有低级错误:
- 单应用:改
app/route/app.php,不是config/route.php - 开头必须有
use think\facade\Route;,否则Route::get()会报类未定义 - 路径要带前导斜杠:
Route::get('/api/user', 'Api/User/index'),不能写成'api/user' - POST 接口必须用
Route::post(),不能只写Route::get()或依赖Route::any()却没声明方法
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










