先看现象。站点把 .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 里保留旧地址会明显拖慢这个过程。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
