给蜘蛛池入口页里的链接加上 rel="nofollow",本意通常是“这条链接我不想让蜘蛛跟过去”。但实际观察下来,不少人会发现目标 URL 依然出现在抓取日志里。要把这件事说清楚,需要先把两个概念分开:链接发现和权重传递。
发现和权重,是两条不同的链路
搜索蜘蛛解析入口页 HTML 时,会把 a 标签里的 href 地址提取出来,放进待抓取队列,这一步叫 URL 发现。是否给它传递权重和信任度,是另一套判断逻辑。rel 属性主要作用在后者,它对前者的影响更接近于“建议”,而不是一个硬开关。
换句话说,加了 nofollow 的链接,仍然可能被解析、被发现,甚至被单独访问一次;只是搜索引擎在计算关系时,不会把它当作站点主动给出的推荐。
nofollow、sponsored、ugc 分别在说什么
- rel="nofollow":声明这条链接不是站点主动推荐的,常见于评论、广告位、付费合作。历史上它是硬性阻断,现在更多被当成提示处理。
- rel="sponsored":明确标注付费或商业合作性质的链接。
- rel="ugc":标注来自用户生成内容的链接,比如论坛帖子、评论区。
三者的共同点是:都在告诉搜索引擎“这条链接的关系需要打折看待”,而不是“这条链接不存在”。不同搜索引擎的解读并不完全一致,有的仍然比较严格地不跟进,有的会过去看一眼。
为什么日志里还是能看到抓取
常见原因有几个:
- 目标 URL 通过别的路径被发现了,比如其他入口页、sitemap、外部链接,甚至目标页自己的站内互链。
- 蜘蛛只是访问一次做状态判断和去重,这不代表它会长期抓,更不代表会收录。
- 入口页本身被抓得很频繁,蜘蛛顺手把页面上的地址都列进了队列。
日志里出现抓取记录,只能说明“这条 URL 被访问过”,不能直接推导出“它被收录了”或者“它在获得排名”。这两件事之间还有很长一段距离。
想让蜘蛛别抓,该动哪一层
如果目的确实是阻止抓取,优先级更明确的做法是:
- 在目标 URL 上使用 robots.txt 的 Disallow,这是抓取层的控制。
- 在目标页返回 noindex(meta 标签或 X-Robots-Tag),它控制的是收录结果,不是抓取行为。
- 让链接本身不形成可解析的地址结构,但要意识到,这同时会让正常用户和搜索引擎都失去这条路径。
还需要提醒:robots.txt 只约束守规矩的爬虫,而且被 Disallow 的 URL 依然可能因为外链锚文本等信息出现在索引里。抓取层和收录层要分开处理,不要指望一个属性解决全部问题。
想让目标 URL 被发现,检查这几项
- 链接是标准的 a 标签加 href 属性,不是 onclick 事件,也不是纯文本地址。
- 没有加 nofollow、sponsored、ugc 这类会削弱关系标注的属性。
- 入口页自身可被抓取:robots.txt 允许、返回 200、没有 noindex。
- 链接出现在 HTML 源码里,而不是完全依赖脚本渲染后才出现。
- 入口页数量和新增链接的增长节奏平缓,不要一次性堆入大量新地址。
实操建议
把 rel 属性当成“关系标注”,而不是“抓取开关”。真正需要精细控制的,是抓取层(robots.txt、日志观察、服务器响应稳定性)和收录层(noindex、内容质量、页面价值)这两件事。至于目标 URL 最终会不会被收录、排在第几位,取决于内容本身和站点整体情况,任何入口页技巧都无法承诺结果。