Apache实现HTTPS强制跳转的核心是用RewriteCond判断非HTTPS请求,再用RewriteRule发起301永久重定向;推荐在.htaccess中写入RewriteEngine On、RewriteCond %{HTTPS} off、RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301],并确保mod_rewrite已启用、AllowOverride All已配置、代理环境下改用X-Forwarded-Proto判断。

Apache 实现 HTTPS 强制跳转,核心是用 RewriteCond 判断非 HTTPS 请求,再用 RewriteRule 发起 301 永久重定向。推荐写法简洁、兼容多域名、保留完整路径和参数。
标准写法(推荐)
在网站根目录的 .htaccess 文件中添加以下内容:
RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
说明:%{HTTPS} off 表示当前未走 HTTPS 协议;%{HTTP_HOST} 自动获取访问域名(支持 www 和非 www);%{REQUEST_URI} 完整保留路径、查询参数(如 ?id=123);[L,R=301] 表示这是最后一条规则,且返回 301 状态码。
需提前确认的配置项
若规则不生效,检查以下三点是否已启用:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- Apache 的
mod_rewrite模块已加载(LoadModule rewrite_module modules/mod_rewrite.so取消注释) - 网站所在目录的
<Directory>块中,AllowOverride设置为All(而非None) - 如果使用宝塔或虚拟主机,确认面板或服务商允许 .htaccess 生效
多域名或指定域名跳转
若只对特定域名生效(例如仅 example.com 和 www.example.com 跳转),可加条件判断:
RewriteCond %{HTTP_HOST} ^(example\.com|www\.example\.com)$ [NC]RewriteCond %{HTTPS} offRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
注意:[NC] 表示不区分大小写,避免匹配失败。
代理环境(如 Nginx 前置、云 WAF)的适配
当 Apache 前面有反向代理时,%{HTTPS} 可能始终为 off。此时应改用 X-Forwarded-Proto 头判断:
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
常见于宝塔+Nginx+Apache 组合、阿里云 SLB 或 Cloudflare 等场景。

















