为了不让蜘蛛顺着搜索结果页爬走,模板给结果链接统一加了 rel=nofollow。三个月后文章页抓取量下降三成,日志里蜘蛛在搜索页停留的次数变多,详情页请求占比从 60% 掉到 38%。
一开始怀疑是「分页链接也被加了 nofollow,深层结果页进不来」,查了一圈,方向不对。
把日志和配置对完,能解释这个现象的基本就这几处。nofollow 加在结果链接上,搜索页成了抓取终点。也可能是搜索页本身没有 noindex,蜘蛛反复来抓同一批地址。
另外,侧栏推荐位同样被 nofollow,内链通路被切断。
上来先检查结果链接上的 rel 属性
curl -s 'https://www.example.com/search?q=nginx' | grep -o 'noindex' | wc -l
然后把 noindex 放到搜索页头部替代 nofollow
curl -s 'https://www.example.com/search?q=nginx' | grep -i 'X-Robots-Tag'
再往下确认文章页链接不再带 nofollow
curl -s https://www.example.com/p/1 | grep -o 'rel="[^"]*"' | sort | uniq -c
剩下的就是对比改前改后的详情页抓取占比
grep -c '/p/' access.log
别只看报错消失,验证要多做一步。搜索页进入已排除状态,详情页抓取占比回到 55% 以上,新文的收录间隔缩短。
这里还有个坑。nofollow 只是不传权重,不阻止抓取,要挡索引得用 noindex,两个信号别混着用。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
