Laravel 8中.htaccess配置HTTP转HTTPS失效,请求技术支援
Laravel 8 .htaccess HTTPS重定向失效解决办法
针对你的HTTPS重定向不生效问题,可从以下几个方面排查和修复:
1. 调整.htaccess重定向规则
现有规则在反向代理、负载均衡等架构下可能无法正确识别HTTPS状态,建议修改规则同时兼容直接部署和代理场景:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 适配直接部署和反向代理环境的HTTPS判断 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # 处理授权头 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 移除末尾斜杠(非目录请求) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # 路由转发到前端控制器 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
- 新增
%{HTTP:X-Forwarded-Proto}判断,解决代理环境下HTTPS变量失效问题 - 将临时重定向
[R,L]改为永久重定向[R=301,L],符合SEO和浏览器缓存规范
2. 配置Laravel应用强制HTTPS
仅靠.htaccess可能不够,需同步配置应用层面:
- 修改
.env文件:APP_URL=https://app.workfromhere.com.my - 打开
config/app.php,确保URL配置正确:'url' => env('APP_URL', 'http://localhost'), - 可选:在
app/Providers/AppServiceProvider.php的boot方法中添加代码,确保生成的路由链接均为HTTPS:public function boot() { if (env('APP_ENV') === 'production') { \URL::forceScheme('https'); } }
3. 清理应用缓存
修改配置后需清理缓存确保生效:
php artisan config:clear php artisan cache:clear php artisan route:clear
4. 服务器环境验证
- 确认Apache已启用
mod_rewrite模块,可通过phpinfo()页面查看 - 确认服务器SSL证书配置正常,HTTPS本身可正常访问
内容的提问来源于stack exchange,提问作者Iqra Mukhtar
相关产品推荐
相关产品推荐

