巡检样本只取 sitemap 里的 4 万条正文地址,列表分页、标签页、搜索页一条都没覆盖。一次改版后 /page/3/ 之后的列表全 404,两周内没人发现,收录掉了 8000。

原因不止一个,得分开看。样本来源只有 sitemap,分页和聚合页不在其中;sitemap 本身不含分页地址;巡检没有从首页出发做广度遍历;没有对列表页的翻页链接做连通性检查。

上来先抽出列表页的翻页链接

curl -s https://www.example.com/category/seo/ | grep -o 'href="[^"]*page/[0-9]*"' | sort -u | head

批量探测分页状态码

for i in $(seq 1 20); do curl -s -o /dev/null -w "$i %{http_code}\n" https://www.example.com/category/seo/page/$i/; done

再往下把分页与标签页加入巡检样本

python inspect.py --sample sitemap,list,tag --limit 5000

等前面都确认过,再对比改版前后分页返回码

python inspect.py --diff baseline.json

这台环境是别人交接的,不少默认值被动过,只能一项项核。

别只看报错消失,验证要多做一步。分页死链在巡检报告里被列出并修复,列表深层页的收录在一个月内恢复。

容易忽略的是,sitemap 只包含想被收录的地址,故障往往发生在那些没写进去的页面上。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189