301checkRedirect Inspector
301check / 文档 / HTTPS 迁移

GUIDE 05

HTTP 到 HTTPS 的正确迁移顺序

先让 HTTPS 本身完整可用,再把 HTTP 流量迁过去,最后才考虑 HSTS。顺序错误会把证书或代理问题放大成全站不可访问。

阅读时间约 9 分钟 · 最后更新:2026-07-11

第一步:让 HTTPS 独立可用

在启用强制跳转前,先直接访问 HTTPS 版本,验证证书链、域名覆盖、有效期、TLS 协议、页面功能和静态资源。证书应覆盖用户可能访问并发生跳转的每个旧主机名,因为浏览器必须先成功建立旧主机的 TLS 连接,才能读取重定向。

检查页面中的脚本、样式、图片、字体、API 和 WebSocket 是否仍引用 HTTP。被浏览器阻止的混合内容可能不会体现在服务器端 HEAD 检测中,需要结合浏览器控制台和网络面板。

第二步:配置一次性跳转

HTTP 入口应直接指向最终 HTTPS 规范地址。如果同时统一 www、路径或尾斜杠,应尽量合并成一次跳转。先用临时状态小范围验证规则,确认无误后再切换为 301 或 308,避免错误永久跳转进入浏览器和 CDN 缓存。

http://example.com/old
  → https://www.example.com/new
  → 200 OK

第三步:正确处理反向代理

CDN 或负载均衡终止 TLS 后,源站连接可能是 HTTP。应用必须信任来自指定代理的 X-Forwarded-Proto 或标准 Forwarded 头,同时不能无条件信任公网客户端伪造的代理头。错误配置会导致 HTTPS 循环、错误绝对链接或 Secure Cookie 丢失。

第四步:更新站内信号

  • 站内链接直接使用 HTTPS 最终地址。
  • canonical、hreflang、Open Graph 和结构化数据使用 HTTPS。
  • sitemap 只列出可索引的 HTTPS URL。
  • 第三方回调、OAuth、支付通知和 webhook 更新到 HTTPS。
  • Cookie 根据用途设置 Secure、HttpOnly 和合适的 SameSite。

最后才启用 HSTS

HSTS 告诉浏览器在未来直接使用 HTTPS,不再尝试 HTTP。它能降低降级攻击风险,但也会让客户端在证书或 HTTPS 配置故障时无法绕过。先用较短 max-age 观察,确认所有子域都支持 HTTPS 后再考虑 includeSubDomains;提交 preload 更是长期承诺。

不要过早 preload:一旦进入浏览器预加载列表,关闭 HTTPS 或迁回 HTTP 不能立即恢复。必须先审计所有子域、遗留设备和第三方接入。

验证矩阵

入口预期重点
http://example.com一次到最终 HTTPS主机名与路径
https://example.com证书成功后规范化SAN 与 SNI
http://www.example.com/path保留路径和查询Location 完整性
HTTPS 最终页200,无混合内容资源与 API

回滚思路

保留证书和 HTTPS 服务,即使需要暂时撤销强制跳转,也不要让已收到 HSTS 的用户失去 HTTPS。回滚应优先恢复上一版应用或代理配置,而不是把流量降级回明文 HTTP。