现场是这样的。WordPress 的评论回复链接带 ?replytocom=,日志里这类地址一天被抓四千多次,占全部抓取的近三成,每个地址内容都一样,正文页面反而抓得少。

中间走过弯路,把「主题没有把 replytocom 重写成锚点」当成主因,改完现象没变。

原因不止一个,得分开看。评论回复链接在页面里是真实 a 标签,蜘蛛会跟着抓;参数地址没有 canonical,也没有加 nofollow;sitemap 之外的入口页把评论分页也暴露了。

先统计带 replytocom 的请求

findstr /c:"replytocom" access.log | measure -Line

随后确认该地址返回的内容

curl -s "https://www.example.com/post-1024/?replytocom=15" | findstr /i "<title>"

接着把评论链接改成锚点形式

echo get_comment_link($comment, array('add_fragment'=>true));

给参数地址加 canonical 指向正文

curl -s "https://www.example.com/post-1024/?replytocom=15" | findstr /i canonical

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

恢复的判定其实很直接。改成锚点后,replytocom 请求降到每天几十次,正文页的抓取条数同步上升。

提醒一点。评论参数页是 WordPress 常见的预算漏洞,改一个模板函数就能收口,成本很低。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189