先看现象。站点把 .html 后缀统一去掉,旧地址 301 到新地址。半年后 site 查询里仍有 5000 条带 .html 的地址在索引里,点进去跳到新页,但排名信号没有完全合并。

把日志和配置对完,能解释这个现象的基本就这几处。旧地址量大且外链多,蜘蛛反复抓取但更新缓慢。还有一种是sitemap 里同时列了新地址和 301 前的旧地址。

少数情况下是没有提交改版规则,只是被动等 301 生效。

不容易想到的是,旧地址的 301 规则没保留 query 带参访问时直接回源 404。

先确认旧地址的跳转是否只有一跳

curl -sI https://www.example.com/post/1.html | grep -iE '^(HTTP|location)'

sitemap 里只保留新地址

grep -c '\.html' sitemap.xml

提交改版规则并附上映射样例

curl -s https://www.example.com/sitemap.xml | head -5

一个月后核对索引里的旧地址

site:www.example.com inurl:.html

恢复的判定其实很直接。提交改版规则后第 12 天开始有旧地址被替换,六周内带 .html 的索引条目从 5000 降到 400。

301 只是信号,真正让旧地址退出索引的是抓取与重算,sitemap 里保留旧地址会明显拖慢这个过程。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189