事情本身不复杂,线索都在日志里。sitemap 一共六万条地址,其中 /p/ 开头的三万条全部落在 robots.txt 的 Disallow: /p/ 里。这条规则是两年前换目录结构时留下的,一直没人删。GSC 的 sitemap 报告写着「已提交,被 robots.txt 屏蔽」三万条。

第一反应是「每月看的是索引量总数,被屏蔽这一栏一直没点开」,验证下来不成立。

原因不止一个,得分开看。robots 规则是旧目录结构遗留,新站正文恰好用了同一个前缀。还有一种是sitemap 生成时没有和 robots 做交叉校验,冲突长期没人发现。

另外,CDN 缓存了旧版 robots,即便删了规则边缘还在返回旧内容。

第一件事是把 sitemap 里的地址和 robots 规则做一次交叉比对

curl -s https://www.example.com/sitemap.xml | grep -o '<loc>[^<]*' | sed 's#<loc>##' > urls.txt; grep -c '^https://www.example.com/p/' urls.txt

随后确认线上 robots 的完整内容

curl -s https://www.example.com/robots.txt

接着删掉冲突规则并清掉边缘缓存

curl -X PURGE https://www.example.com/robots.txt

剩下的就是重新提交 sitemap,观察被屏蔽数量是否下降

curl -sI https://www.example.com/sitemap.xml | head -3

恢复的判定其实很直接。被 robots 屏蔽的条目从三万降到零,两周后这批页面陆续进入已发现状态,抓取量同步上升。

容易忽略的是,改 robots 之后别马上重提 sitemap,先确认每个节点都返回新内容,否则蜘蛛读到的还是旧规则。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189