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

Laravel 7.x路由重定向时自动追加http前缀异常问题

问题诱因

该问题本质是Laravel生成路由URL时无法正确获取站点根域名,导致把协议头和路由路径当成相对路径拼接到了当前访问域名之后,常见触发原因如下:

  • 服务提供者URL强制配置错误:如果在AppServiceProvider.php的boot方法中错误调用URL::forceRootUrl('http://')这类错误参数,会直接导致路由生成时拼接异常的协议前缀。
  • .env配置错误:APP_URL参数为空、仅填写了http://没有补全域名,会导致Laravel无法获取正确的根地址生成绝对URL。
  • 反向代理配置异常:使用CDN、负载均衡、Nginx反代时没有正确传递请求头,或者Laravel没有配置可信代理,导致框架无法识别当前请求的真实域名和协议。
  • config/app.php中的url配置项被修改为无效值,比如硬编码为空或者仅保留协议头。
修复方案

按照优先级逐一排查修正即可:

  1. 修正APP_URL配置
    打开项目根目录的.env文件,填写完整的站点域名:
APP_URL=https://site.com

修改后执行命令清理配置缓存:
php artisan config:clear
2. 检查服务提供者URL强制配置
打开app/Providers/AppServiceProvider.php,查看boot方法中的URL强制配置,删除错误的forceRootUrl调用,正确写法示例:

public function boot()
{
    // 如需强制HTTPS仅需配置这一行即可,不需要额外修改根路径
    \URL::forceScheme('https');
}
  1. 配置可信代理与反向代理请求头
    如果使用了反向代理服务,打开app/Http/Middleware/TrustProxies.php,配置可信代理:
// 生产环境建议填写具体的代理服务器IP,不要用*
protected $proxies = '*';

同时在Nginx站点配置中添加请求头传递规则:

location ~ \.php$ {
    # 其他现有配置不变,新增以下三行
    fastcgi_param HTTP_HOST $host;
    fastcgi_param X-Forwarded-Proto $scheme;
    fastcgi_param X-Forwarded-For $remote_addr;
}
  1. 校验config/app.php配置
    打开config/app.php,确认url配置项为默认的读取ENV参数的写法:
'url' => env('APP_URL', 'http://localhost'),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:03