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

Laravel Forge+Linode环境下POST请求被重定向至首页问题

问题解决思路与步骤

1. 修复Nginx尾斜杠重定向问题

从日志能看到,带尾斜杠的POST /api/import/app/orders/返回了301,这是Nginx默认行为导致的:它会自动处理尾斜杠引发重定向,而POST请求经过301跳转后会被转为GET,这是核心问题之一。

修改Laravel Forge中的站点Nginx配置:

  • 找到location /块,添加merge_slashes off;关闭自动合并斜杠规则
  • 将默认的try_files $uri $uri/ /index.php?$query_string;改为try_files $uri /index.php?$query_string;,删除$uri/以避免触发无尾斜杠到带尾斜杠的重定向

修改后的location /配置示例:

location / {
    merge_slashes off;
    try_files $uri /index.php?$query_string;
}

2. 检查Laravel路由与中间件

  • 确认POST接口定义在routes/api.php中,示例代码:
Route::post('/import/app/orders', [ImportController::class, 'handleOrdersImport']);

不要将API路由写到web.php中,避免受Web中间件干扰。

  • 排查API路由组是否被误加了重定向类中间件,比如RedirectIfAuthenticated,这类中间件可能将未认证请求跳转到首页。
  • 确认app/Http/Middleware/VerifyCsrfToken.php的$except数组包含/api/*,API接口无需CSRF验证,未排除会导致验证失败触发重定向:
protected $except = [
    '/api/*',
];

3. 核对HTTPS强制跳转规则

如果站点配置了强制HTTPS,确保跳转规则不会修改请求方法,正确配置如下:

server {
    listen 80;
    server_name app.mydomain.com;
    return 301 https://$server_name$request_uri;
}

避免使用rewrite规则实现跳转,易引发请求方法异常。

4. 清除Laravel缓存

部署后缓存可能导致路由不生效,执行以下命令清除缓存:

php artisan route:clear
php artisan config:clear
php artisan cache:clear

验证测试

修改配置后重启Nginx:

sudo service nginx restart

使用Postman测试https://app.mydomain.com/api/import/app/orders(不带尾斜杠)的POST请求,确认不再重定向到首页。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:33:25