必须使用301重定向实现HTTP→HTTPS跳转,因其能将旧HTTP页面的SEO权重、排名信号和外链价值几乎全部传递至HTTPS版本;错误使用302等临时跳转会阻止权重迁移,导致索引丢失与收录停滞。

HTTPS 重定向直接决定 SEO 权重能否完整、稳定地迁移。用对了,旧 HTTP 页面的排名和外链价值会平滑过渡到 HTTPS 版本;用错了,可能造成权重稀释、索引丢失甚至收录停滞。
301 是 SEO 权重传递的唯一可靠方式
Google 明确表示:只有 301(Moved Permanently)会被视为“永久迁移”,并把原页面的链接权重、历史排名信号、外链信任度等几乎全部传递给新地址。302 或其他临时跳转则不会触发权重转移,搜索引擎仍会持续抓取和评估原始 HTTP 地址。
- return 301 https://$host$request_uri; 是最推荐写法,性能高、语义清晰、无正则开销
- 避免使用 rewrite ... permanent; 处理简单跳转,它需触发正则引擎,多一层解析成本
- 必须确保所有 HTTP 端口(通常是 80)都配置该跳转,包括 www 与非 www、多个 server_name
HTTP → HTTPS 跳转不完整,等于主动放弃部分权重
如果只对主域名做了跳转,但遗漏了 www.example.com → https://www.example.com,或漏配某些子域名(如 blog.example.com),这些未覆盖的入口就会成为“权重黑洞”——爬虫从外部链接访问这些 HTTP 地址时,得不到 301 响应,可能直接索引 HTTP 版本,或因响应异常而降权。
- server 块中 listen 80 应明确列出所有合法 server_name,不依赖通配符
- 若使用 CDN,需同步在 CDN 层配置 HTTP→HTTPS 跳转,否则 Nginx 的 return 可能被绕过
- 检查日志中是否有大量 80 端口的 200 响应,这说明跳转未生效,HTTP 流量仍在直出内容
跳转路径必须保持 $request_uri,否则破坏 URL 语义
搜索引擎将 /product?id=123 和 /product?id=123&ref=abc 视为两个不同页面。若跳转时丢弃查询参数(比如写成 https://example.com/),会导致大量页面无法对应,原有关键词排名失效。
- $request_uri 包含路径 + 完整参数,是保持语义一致的关键变量
- 不要硬编码目标路径,例如 return 301 https://example.com$request_uri; 优于 return 301 https://example.com/;
- 若需统一移除特定参数(如 utm_source),应在跳转后通过 canonical 标签或应用层处理,而非在 Nginx 跳转阶段擅自删减
配合 HSTS 与 canonical 形成三重保障
单靠 301 跳转还不够。HSTS 告诉浏览器“以后只用 HTTPS 访问”,避免首次请求走 HTTP;canonical 标签则兜底处理漏网的带参 URL 或缓存残留,告诉搜索引擎“这个页面的权威地址是 HTTPS 无参版”。
- HSTS 需在 HTTPS server 块中添加 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
- 每个页面 HTML 的 <head> 中应有 <link rel="canonical" href="https://example.com/current-path">
- Google Search Console 提交跳转前后的代表性 URL,观察“已重定向至规范网址”状态是否稳定出现


















