先看现象。日志按路径统计,/feed/ 和 ?replytocom= 两类请求占了抓取量的六成,真正的内容页每天只被访问几十次,新文章一周不进索引。

排查方向其实有限,先把可能性排一排。feed 地址在每个页面都有 link 标签,蜘蛛反复回访。少数情况下是文章内评论的回复链接带参数,生成了大量重复地址。

另外,robots 只屏蔽了 /tag/,没管 feed 和参数。

少数情况下是feed 内容是全量输出,单次抓取的字节数比正文页还大。

上来先按路径统计抓取量占比

awk -F'"' '{split($2,a," "); print a[2]}' access.log | sort | uniq -c | sort -rn | head -20

接着在 robots 里屏蔽 feed 与回复参数

Disallow: /feed/
Disallow: /*?replytocom=

然后把评论回复链接改成静态锚点

add_filter('comment_reply_link', 'strip_replytocom');

末了确认屏蔽后 feed 请求是否归零

grep -c '/feed/' access.log

恢复的判定其实很直接。feed 与回复参数的请求降到个位数,内容页的抓取条数一周内翻倍,新文章进索引的时间缩短到三天。

补一句。屏蔽 feed 之前先确认没有对外提供 RSS 订阅服务的需求,有的话改成只在有更新时输出,别一刀切掉。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189