You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vercel部署Laravel应用后POST请求/api/add返回404及静态资源部署问题排查求助

解决Vercel部署Laravel后/api/add接口404及静态资源问题

首先,我注意到你的vercel.json配置里有几个关键细节可能导致当前的404问题,结合Laravel在Vercel上的部署最佳实践,咱们一步步来修复:

1. 修正Laravel入口文件的配置

你当前的builds指向了/api/index.php,但Laravel的标准入口文件是public/index.php。这会导致Laravel的路由系统无法正确加载,自然无法识别/api/add这类接口请求。

修改vercel.json的builds部分:

"builds": [
  {
    "src": "/public/index.php",
    "use": "vercel-php@0.4.0"
  },
  {
    "src": "/public/**",
    "use": "@vercel/static"
  }
]

2. 调整路由规则,确保API请求正确转发

当前的routes配置里,第二个规则把所有请求都转到/api/index.php,但现在入口改成了public/index.php,需要更新这个规则。同时要确保Laravel的API路由前缀(默认是/api)能被正确处理:

修改routes部分:

"routes": [
  {
    "src": "/(css|js|images)/(.*)",
    "dest": "/public/$1/$2"
  },
  {
    "src": "/api/(.*)",
    "dest": "/public/index.php"
  },
  {
    "src": "/(.*)",
    "dest": "/public/index.php"
  }
]

这样不管是API请求还是页面请求,都会正确转发到Laravel的标准入口,路由系统就能正常解析/api/add了。

3. 验证Laravel的API路由定义

确认你的routes/api.php里已经正确定义了/add接口的路由,比如:

Route::post('/add', [YourController::class, 'store']);

Laravel的API路由默认会自动加上/api前缀,所以这个路由对应的正是/api/add请求。

4. 静态资源问题的额外确认

你之前把vercel-php调整到builds里的做法是对的,现在静态资源的路由规则已经能正确映射到public目录下的文件,应该不会再出现404了。如果还有问题,可以检查一下mix编译后的资源是否正确输出到public/css和public/js目录下。

最后,重新部署你的应用到Vercel,应该就能解决/api/add的404问题了。

内容的提问来源于stack exchange,提问作者Beaumont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 02:52:49