蜘蛛池知识

蜘蛛池入口页的 noindex 与 nofollow:两条指令的边界和常见误用

noindex 和 nofollow 是入口页配置里最常被随手加上的两个指令,但它们管的事情完全不同:一个决定页面进不进索引,一个决定链接跟不跟随。本文说明两条指令各自的作用边界、在入口页上的适用场景,以及写错层级或同时叠加后可能出现的结果和上线前的检查顺序。

蜘蛛池知识

蜘蛛池入口页的 noindex 与 nofollow:两条指令的边界和常见误用

在蜘蛛池的配置项里,noindex 和 nofollow 大概是出现频率最高、也最容易被随手写上的两个指令。不少人把它们当成"减弱页面权重"的开关,但这两条指令管的事情其实完全不同:noindex 管的是页面要不要进索引,nofollow 管的是页面上的链接要不要被跟随。入口页该怎么用,取决于你想让蜘蛛做什么。

noindex 在入口页上到底做了什么

noindex 的作用是请求搜索引擎不要把页面放进索引库,但它并不阻止蜘蛛来抓。蜘蛛照样可以爬到入口页、读取内容、顺着链接继续走,只是这个页面本身不会出现在搜索结果里。这一点经常被误解成"加了 noindex 蜘蛛就不来了",其实屏蔽抓取要靠 robots.txt 或者 401、403 这类响应,两者的效果差别很大。

什么情况下入口页可以加 noindex

  • 入口页只是通道,本身没有获取搜索流量的诉求;
  • 页面内容是批量生成的,质量偏低,不希望它进入索引影响站点整体观感;
  • 入口页内容与目标页高度重复,避免两边同时出现在索引里造成混淆。

反过来,如果入口页本身承担着承接搜索流量的任务,加 noindex 就等于主动放弃这部分入口。配置之前先想清楚目的,再下手。

页面级 nofollow 和链接级 nofollow 不是一回事

链接级的写法是 rel='nofollow',只作用于挂着这个属性的那一两条链接;页面级的写法是在 head 里放 meta name='robots' content='nofollow',作用于整页所有链接。实践中写错层级的例子很多,比如只想控制一条链接,却在 head 里写了页面级 nofollow,结果整页链接都不再被跟随。

简单记:rel 管一条,meta 管一页。动手之前先确认自己要控制的范围。

几种常见的误用

  1. noindex 和 nofollow 一起写在入口页。页面不进索引,链接也不跟随,蜘蛛爬到这一页基本就停住了,通道等于自己堵上。
  2. 把 noindex 当成屏蔽抓取的手段。它不减少抓取,只是不收录,日志里依然会看到蜘蛛访问的记录。
  3. 只靠前端脚本插入 meta robots。如果初始 HTML 里没有,部分蜘蛛读到的可能是没有该指令的版本,页面行为就不受控了。
  4. 响应头里的 X-Robots-Tag 与页面 meta 写了相反的值。两者冲突时通常按更严格的一方生效,很容易在不知情的情况下把页面屏蔽掉。
  5. 误把 noindex 加到了目标页上。这是代价最大的错误,等于整条链路白跑,上线前必须单独核对目标页的配置。

一个相对稳妥的配置思路

  • 入口页:保持可抓取,允许链接被跟随;是否需要 noindex 看你的索引策略,两种都可以,但不要同时再叠 nofollow。
  • 目标页:保持可抓取、可索引,不加任何屏蔽类指令。
  • 不想被抓的目录:用 robots.txt 或访问控制处理,而不是用 noindex 硬扛。

上线前值得过一遍的检查项

  • meta robots 是否写在初始 HTML 的 head 中,而不是靠脚本后置插入;
  • 响应头里的 X-Robots-Tag 是否和页面内的声明一致;
  • 入口页和目标页的指令是否写反;
  • 修改后隔一段时间看服务器日志,确认蜘蛛的实际行为符合预期。

noindex 和 nofollow 都不是"加了更安全"的指令,它们会实打实改变蜘蛛的行为。入口页加不加、加哪一条,最好在配置前就写清楚理由,而不是照着别人的模板抄一遍。