这个坑值得记一笔。迁到新域后旧域保留了 Strict-Transport-Security max-age=31536000 includeSubDomains 新域 server 块里漏了这行 http://www.new.com 与 https 同时返回 200 索引里出现两套协议地址 看着涨了实际是重复

刚开始盯着「CDN 用 http 回源 回源域名与站点域名还不一致」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。新域 server 块没加 HSTS 响应头 浏览器和蜘蛛都能走 http;canonical 写的是 https 但服务器不强制跳转;GSC 里 http 与 https 两个属性都验证过 数据被拆开看。

先确认两个协议的返回码和响应头

curl -sI http://www.new.com | grep -i -E 'HTTP/|strict'

接着在新域统一加 HSTS 与 301

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;

再往下检查 CDN 回源协议设置

curl -sI https://www.new.com | grep -i via

只保留 https 属性并提交地址变更

https://search.google.com/search-console

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

怎么算真的好了,看的是同一批现象。http 访问全部 301 到 https 响应头里能看到 HSTS 两套协议地址在索引里合并成一套。

HSTS 一旦下发浏览器会记住 max-age 期间别随便改回 http 否则用户直接打不开。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189