Laravel 10登录后重定向至HTTP而非HTTPS问题求助
Laravel 10 登录后重定向至HTTP导致无法登录的解决方法
现有配置说明
已尝试的配置如下:
.env文件配置:
APP_URL="https://doma.in" ASSET_URL="https://doma.in" APP_USE_HTTPS=true FORCE_HTTPS=true SESSION_DOMAIN="doma.in" SESSION_SECURE_COOKIE=true
- 在
AppServiceProvider的boot方法中添加:
\URL::forceScheme('https');
- 在
app.blade.php中加入:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
- 已执行所有Laravel清理命令(如
php artisan config:clear、php artisan cache:clear、composer dump-autoload等) - 登录表单地址为
https://doma.in/login
问题现象
登录成功后系统自动重定向至 http://doma.in/home,导致无法正常进入系统。
针对性解决步骤
1. 检查认证路由的重定向逻辑
Laravel默认登录后的重定向由 RedirectIfAuthenticated 中间件或 LoginController 中的redirectTo属性/方法控制:
- 打开
app/Http/Middleware/RedirectIfAuthenticated.php,确保重定向使用路由名称而非硬编码HTTP地址:
// 推荐用路由名称,自动适配协议 return redirect()->route('home');
- 若使用
LoginController,检查redirectTo方法或属性,确保返回正确的路由名称或HTTPS地址:
protected function redirectTo() { return route('home'); }
2. 服务器层面强制HTTPS(关键)
若Laravel内部配置生效但仍出现HTTP重定向,大概率是服务器未正确转发HTTPS请求头,导致Laravel误判请求协议:
- Nginx:在站点配置中添加规则,强制跳转并传递HTTPS头:
server { listen 80; server_name doma.in; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name doma.in; location / { try_files $uri $uri/ /index.php?$query_string; fastcgi_param HTTPS on; fastcgi_param HTTP_X_FORWARDED_PROTO https; } # 其他SSL配置... }
- Apache:在
.htaccess中添加规则:
RewriteEngine On # 强制HTTP跳转至HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 传递代理转发的HTTPS标识 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3. 配置Laravel信任代理
若应用部署在反向代理(如Nginx、Cloudflare)后,需让Laravel信任代理以正确识别HTTPS请求:
- 在
.env中添加:
TRUSTED_PROXIES=*
- 或在
config/app.php中配置:
'trusted_proxies' => ['*'], // 生产环境建议指定具体代理IP 'trusted_headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_FOR | Illuminate\Http\Request::HEADER_X_FORWARDED_HOST | Illuminate\Http\Request::HEADER_X_FORWARDED_PORT | Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO,
配置完成后执行 php artisan config:clear 生效。
4. 清除浏览器缓存
部分浏览器会缓存旧的重定向规则,建议清除缓存后重新测试登录流程。
内容的提问来源于stack exchange,提问作者Vit
相关产品推荐
相关产品推荐

