在服务器日志里看到某条 URL 被蜘蛛访问,而它来自一个标了 nofollow 的链接,很多运营者会疑惑:不是说不让跟吗?这类疑问通常源于把链接属性当成了绝对指令。对蜘蛛来说,nofollow 更像一个提示,而不是一道围墙。
链接属性各自在表达什么
常见的链接属性有三类,它们的语义和使用场景并不相同:
- nofollow:表示不背书、不传递信任,常用于用户可提交内容、广告位或不想背书的站外链接。
- ugc:标明链接来自用户生成内容,比如评论、论坛帖子。
- sponsored:标明链接是付费合作或赞助内容。
这些属性的共同点是告诉搜索引擎“这个链接的关系需要区别对待”,但它们并不等于“禁止访问”。蜘蛛是否请求链接指向的 URL,还要看该 URL 是否可访问、是否被 robots.txt 挡住、服务器是否稳定。
蜘蛛遇到标注链接时的几种可能
实际抓取中,标注过的链接可能出现下面几种情况:
- 蜘蛛仍然抓取目标 URL,只是不把它当作信任传递的路径。
- 蜘蛛暂时不抓,但后续从其他入口发现同一 URL 时仍会抓。
- 蜘蛛不抓该链接,但目标 URL 已经通过 Sitemap、内链或外部链接进入抓取队列。
所以,判断一条 URL 会不会被抓,不能只看链接上有没有 nofollow,还要看它有没有别的发现路径。一个页面如果只靠一条被标注的链接进入,而这条链接又是唯一入口,它的抓取优先级通常会下降。
内链上使用 nofollow 会改变抓取路径吗
站内链接是蜘蛛最主要的路径来源。给导航、面包屑、分页或正文里的内链加 nofollow,蜘蛛仍可能通过其他入口到达目标页,但这条路径变窄了。尤其是深层页面,如果原本靠导航和列表页层层递进被发现,把中间层标注掉,蜘蛛到达深层页面的效率和频次都可能发生变化。
因此,内部链接通常不建议大面积使用 nofollow。更常见的做法是:让正常内链保持可跟,把真正需要控制的部分交给 robots.txt、canonical 或服务器端返回状态码来处理。
链接属性是路径管理工具之一,不是唯一手段。用它之前,先确认页面的主要发现入口是不是会因此被切断。
分页、筛选与排序链接的标注思路
列表页的分页链接、筛选参数、排序参数,是抓取路径里容易纠结的地方。分页通常是通往更早内容的正经路径,随意标注 nofollow 可能让蜘蛛少走很多页。筛选和排序参数则可能组合出大量相似 URL,更适合用 robots.txt 规则、参数处理或 canonical 来收敛,而不是简单把整块链接标注掉。
如果某个筛选组合确实没有独立价值,也不要把列表页上唯一的入口全部掐断。可以先看日志:蜘蛛是否已经在抓这些组合,抓取频次是否挤占了重要页面,再决定收敛方式。
标注之后怎么确认蜘蛛的实际行为
想确认 nofollow 是否影响了抓取,可以从日志入手,按顺序做几件事:
- 筛选搜索引擎蜘蛛的 User-Agent,确认目标 URL 是否仍被请求。
- 查看请求来源,判断蜘蛛是从哪个页面找到这条 URL 的。
- 对照标注前后的抓取频次,看变化是短期波动还是持续下降。
- 观察同一批新页面从上线到首次被抓的时间,判断发现路径是否变慢。
不要只凭一次日志下结论。蜘蛛的抓取调度受服务器响应、页面权重、站点整体更新频率等多方面影响,单次访问与否不能直接说明属性失效。
几个常见误区
- 给外链加 nofollow 就等于蜘蛛不抓。蜘蛛仍可能请求该 URL,只是不传递信任。
- 用 nofollow 代替 canonical。两者作用不同,canonical 处理的是重复内容归并,nofollow 处理的是链接关系。
- 全站内链加 nofollow 能省抓取预算。更可能让蜘蛛找不到入口,尤其是深层页面。
把 nofollow、ugc、sponsored 当成路径管理的一部分,先确认页面的发现入口、再决定标注范围,最后用日志验证实际效果。这样比把链接属性当作开关更接近蜘蛛真实的工作方式。