旧域名只做 301 跳转,运维觉得不再使用就没续证书,证书过期后蜘蛛访问旧地址直接握手失败,301 根本发不出去,权重合并中断。
排查方向其实有限,先把可能性排一排。证书过期后 HTTPS 请求在 TLS 层就失败,读不到 301 响应;旧域名仍有大量外链,蜘蛛持续尝试访问;HSTS 缓存让浏览器和蜘蛛都无法回退到 http;新证书只签了新域名,没有覆盖旧域名。
先确认旧域名证书状态
curl -sI https://old.example.com/ | findstr /i "HTTP"
然后用 openssl 看证书有效期
openssl s_client -connect old.example.com:443 -servername old.example.com </dev/null 2>&1 | findstr notAfter
给旧域名续签并保留 301
certbot certonly -d old.example.com
复验跳转是否恢复
curl -sI https://old.example.com/post-1024/ | findstr /i "HTTP location"
这台环境是别人交接的,不少默认值被动过,只能一项项核。
同事提醒我看一下最近一次发布,时间点确实对得上。
改完先别撤,确认这几项。续签后旧域名的 301 恢复正常,三周内旧地址的抓取逐步转成对新地址的访问。
做 301 的域名也要维护证书,跳转发生在握手之后,证书一过期,整条链路就断在最前面。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
