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
相关产品推荐
相关产品推荐

