先把当时的情况摆出来。文章评论按 ?cpage= 分页,最多翻到 200 页。有个论坛把第 50 页的地址贴了出去,蜘蛛顺着翻完所有评论页,一个月抓了 14 万次。
原因不止一个,得分开看。评论分页地址可被抓取,且页面之间互相链接。也可能是评论页正文只有几条留言,被判定为低价值内容。
还有一种情况,canonical 指向评论页自身,没有合并到文章页。另外,sitemap 里还包含评论分页地址,主动送了入口。
上来先统计评论分页的抓取量与占比
awk '{print $7}' access.log | grep -c 'cpage='
随后把评论分页的 canonical 指回文章首页评论
curl -s 'https://www.example.com/post/1024?cpage=5' | grep -o 'rel="canonical"[^>]*'
评论分页链接加 nofollow
add_filter('paginate_comments_links', function($l){ return str_replace('<a ', '<a rel="nofollow" ', $l); });
从 sitemap 里去掉带 cpage 的地址
grep -c 'cpage=' sitemap.xml
这次没动代码,只在配置和运行环境上找原因。
恢复的判定其实很直接。评论分页抓取量下降 90%,文章页的抓取频次上升,新评论也能更快出现在页面上。
评论翻页是有价值但优先级很低的内容,把入口收紧、canonical 合并,比全部 noindex 更温和有效。这类问题最好一次改到位,反复小改反而容易把原因搅混。
