这个坑值得记一笔。采集插件按正文分词自动打标签,两年攒下 1.2 万个标签,其中 1.1 万个只挂过一篇文章。sitemap 里标签地址占了一半,蜘蛛每天抓 3000 条标签页,每页只有一条内容。

刚开始盯着「sitemap 生成逻辑把标签全量包含」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。分词结果直接入库,没有做同义词合并和数量阈值;标签下只有一篇文章时仍生成独立地址;标签页之间只靠标签云互链,形成大量低质入口。

动手时先统计只用过一次的标签数量

mysql -e "SELECT COUNT(*) FROM wp_terms t JOIN wp_term_taxonomy x ON t.term_id=x.term_id WHERE x.taxonomy='post_tag' AND x.count<2;"

然后导出标签清单按数量排序

wp term list post_tag --fields=term_id,name,count --format=csv > tags.csv

接着验证单篇标签页当前返回什么状态码

curl -s -o /dev/null -w '%{http_code}\n' 'https://www.example.com/tag/only-one/'

sitemap 只保留文章数大于 3 的标签

mysql -e "SELECT slug FROM wp_terms t JOIN wp_term_taxonomy x ON t.term_id=x.term_id WHERE x.taxonomy='post_tag' AND x.count>3;" -N

怎么算真的好了,看的是同一批现象。标签数量降到 900 个左右,标签页抓取量从每天 3000 条降到 400 条,正文页抓取占比回升。

自动生成的标签页对用户几乎没用,对蜘蛛却是无底洞,宁可少而准。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189