处理页面收录时,最容易被混在一起的三件事是:让不让蜘蛛来抓、抓到了要不要进索引、页面上的链接要不要跟着走。这三个问题分别由 robots.txt、noindex 和 nofollow 来回答。写错一行,结果常常和预期相反。
三条指令各管一段
robots.txt:管抓取,不管收录
robots.txt 放在站点根目录,告诉蜘蛛哪些路径可以抓。它拦的是“来不来”,不是“进不进索引”。一个被 robots.txt 屏蔽的 URL,如果别处有链接指向它,仍然可能以只有 URL、没有摘要的形式出现在索引里。想让它彻底不进索引,屏蔽之外还得配合 noindex;但要注意,被屏蔽的页面蜘蛛抓不到,页面里的 noindex 也就读不到。这两条指令是需要配合的一对,不是互相替代。
noindex:管收录,不管抓取
noindex 写在页面里,表达的是“可以抓,但别放进索引”。它必须靠蜘蛛真正抓到页面才能生效,所以它无法解决“不希望蜘蛛来”的问题,那是 robots.txt 的活。
nofollow:管链接
nofollow 写在链接标签上,表示这条链接不背书。它影响的是链接信号的传递,不是目标页面能不能被抓到。很多蜘蛛仍然会顺着 nofollow 链接发现新 URL,只是传递的价值不同。想靠 nofollow 让一个页面不被发现,通常达不到目的。
几种容易打架的组合
- robots.txt 屏蔽加页面里写 noindex:noindex 读不到,页面仍可能以裸 URL 出现在索引中。
- noindex 加 canonical 指向别处:两个信号方向不一致。既然已经 noindex,canonical 指向自己通常就够了,不必再对外声明归并。
- nofollow 加希望被收录:nofollow 不会阻止收录;但如果全站内链都加了 nofollow,蜘蛛发现新页面的速度会变慢。
- 只在 robots.txt 里屏蔽 PDF、图片等非 HTML 文件:这类文件没有 head 区,无法用 meta 标签控制,需要用响应头里的 X-Robots-Tag。
写法上的几个注意点
meta 标签的写法是 name 为 robots,content 为 noindex;如果要针对特定蜘蛛,把 robots 换成对应的名称。X-Robots-Tag 写在 HTTP 响应头里,对 PDF、图片、视频同样有效,是控制非 HTML 文件的常用方式。
- noindex 后面不要随手再加 follow 或 nofollow,除非你确实想表达“别收录这些内容,但可以顺着链接走”。
- 指令要放在模板能稳定输出的位置。被缓存、被条件渲染漏掉,就会出现“以为写了其实没写”的情况。
- 用 X-Robots-Tag 控制时,确认它出现在真实响应头里,而不是只写在本地配置文件中。
临时下架与永久移除
如果只是短期不想让人看到,用 noindex 加保留抓取,之后去掉指令即可恢复;如果是永久移除,robots.txt 屏蔽加 noindex 一起上,并对那些已经进了索引的裸 URL 做处理。反过来,只想减少抓取压力、并不在意收录的路径,屏蔽抓取就够了,不必再加 noindex。
排查顺序
- 先在浏览器里查看页面源代码或响应头,确认指令确实输出到了线上。
- 再看 robots.txt 是否屏蔽了这条路径。屏蔽了就先解屏蔽,再等重新抓取。
- 看看这条 URL 在索引里的状态,是已抓取但未编入索引,还是仍以裸地址出现。
- 核对 canonical 与 noindex 的方向是否一致。
- 改完之后给蜘蛛留出重新抓取的时间,不要改完当天就下结论。
把抓取、收录、链接三件事分开看,指令才不容易互相抵消。