这个坑值得记一笔。文章底部的相关推荐按分类取最新 5 篇,同一分类下所有文章推的都是那 5 条。三个月后这 5 篇的抓取频次是普通文章的 6 倍,其余老文章在日志里一周都见不到一次。
刚开始盯着「老文章没有其他内链入口,逐渐被冷落」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。推荐逻辑只按分类取最新,没有随机和权重;同一批文章被全站几千页指向,形成链接热点;推荐位没有排除当前文章,偶尔出现自指链接。
动手时先统计相关推荐里出现次数最多的地址
curl -s https://www.example.com/p/1 | grep -o 'href="/p/[0-9]*"' | sort | uniq -c | sort -rn | head
再往下确认是否存在自指链接
curl -s https://www.example.com/p/1 | grep -c 'href="/p/1"'
接着清掉缓存让推荐重新计算
wp transient delete --all
剩下的就是用日志核对老文章的抓取次数
grep -c '/p/3' access.log
别只看报错消失,验证要多做一步。相关推荐分布变得分散,头部文章的抓取倍数降到 2 倍以内,老文章开始重新被抓。
内链要像撒网而不是打点,同一批地址被几千页指向,剩下的内容就没人管了。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
