蜘蛛池知识

蜘蛛池入口页的 robots、meta robots 与 canonical:该屏蔽什么、该放开什么

入口页做不出来效果,很多时候不是内容问题,而是抓取开关本身就设错了。本文把 robots.txt、meta robots、X-Robots-Tag 与 canonical 分开讲清楚,说明每一样东西在蜘蛛池里真正管什么、容易踩哪些坑,并给出一套从整站到单页的检查顺序。

蜘蛛池知识

蜘蛛池入口页的 robots、meta robots 与 canonical:该屏蔽什么、该放开什么

做入口页的人常常把精力花在标题、内容量和跳转方式上,却忽略了一个更靠前的问题:这些页面到底该不该让搜索引擎抓。robots.txt、meta robots 和 canonical 这三样东西,用对了是分流和去重的工具,用错了就是自己把入口堵上,后面再怎么调内容都白搭。

先分清入口页承担什么角色

屏蔽还是放开,取决于页面在整批资源里的位置。通常可以分成三类:

  • 纯发现型入口页:本身没有独立阅读价值,任务只是把蜘蛛引向目标页。
  • 带内容的入口页:有一定信息量,有可能被当作普通页面收录并参与展示。
  • 重复型入口页:同一批目标页在不同域名或不同路径下反复出现,页面之间高度相似。

角色不同,处理方式就不同。把三类页面用同一套规则一刀切,是最常见的错误来源。

robots.txt:管的是抓取通道,不是收录状态

robots.txt 决定蜘蛛能不能来抓,但它并不等于“页面不会被收录”。被 robots 挡住的 URL,如果别处有链接指向,仍然可能以无摘要的形式出现在结果里。所以用 robots.txt 挡一批入口页时,要意识到你挡掉的是抓取,不是全部曝光。

在蜘蛛池的场景里,robots.txt 更适合做粗粒度的通道控制:

  • 整站或某个目录完全不需要被抓,直接 Disallow 掉,减少无效抓取。
  • 只开放入口页所在的路径,把后台、测试目录、参数泛滥的搜索结果页排除在外。
  • 不要用 robots.txt 去挡 CSS、JS 等静态资源,否则蜘蛛渲染页面时会看到残缺版本。

另外要注意,Disallow 规则是前缀匹配,写 /go 会把 /google-news 这类路径一起挡掉。多写几条精确规则,比写一条模糊规则更安全。

meta robots 与 X-Robots-Tag:单页级别的开关

如果只有少数页面需要特殊处理,用 meta robots 更合适,它不影响其他页面。常用取值里,noindex 表示不要收录,nofollow 表示不要沿着页面上的链接继续跟进,noarchive 表示不要保留快照。

这里有个容易忽略的点:noindex 和 nofollow 的作用完全不同。入口页的任务就是让蜘蛛顺着链接走,如果在入口页上加了 nofollow,等于把出口全部封死,页面被抓了也没有意义。反过来,如果入口页本身不想被收录,用 noindex 就够了,不必顺手加 nofollow。

对于非 HTML 资源,或者不方便改页面的情况,可以用 HTTP 响应头里的 X-Robots-Tag 达到同样效果。它和 meta robots 的语义一致,只是生效位置不同。

canonical 在蜘蛛池里的实际作用

canonical 的作用是告诉搜索引擎“这一组相似页面里,哪个是主版本”。在入口页批量生成的环境下,它主要有两种合理用法:

  • 同一份内容对应多个 URL(带参数、大小写、末尾斜杠差异),把变体指向规范版本。
  • 入口页确实存在明显的重复关系,且你希望其中一版被优先处理。

误用也很集中:把所有入口页的 canonical 全部指向首页或目标页。这种写法等于告诉搜索引擎“这些页面都不是独立内容”,入口页基本不会被正常收录,页面上的链接价值也会被削弱。如果入口页本来就不需要收录,用 noindex 更直接,不需要绕道 canonical。

几个反复出现的误区

  • 同时用 noindex 和 canonical:两个信号互相干扰,蜘蛛通常不会按你期待的优先级处理。
  • 用 robots.txt 屏蔽后又指望页面被收录:这两个目标本身就是矛盾的。
  • 改完规则不做验证:robots.txt 写错一个字符,可能整站停止抓取,而这个过程往往几天后才发现。
  • 忽略移动端与桌面端规则不一致:两边 robots 或 meta 不同,会让抓取表现变得难以解释。

一套从整站到单页的检查顺序

  1. 先看 robots.txt:是否误挡了需要抓取的目录和静态资源,规则是否有前缀误伤。
  2. 再看页面响应头:是否有意外的 X-Robots-Tag,尤其是接口或动态生成的入口页。
  3. 然后看 meta robots:入口页是否被误加了 noindex 或 nofollow。
  4. 最后看 canonical:是否指向了不相关的页面,是否与 noindex 冲突。
  5. 改完后用抓取工具或日志回访确认,别只看配置写完就结束。
抓取控制在蜘蛛池里属于地基类的设置:它不直接带来效果,但设置错了,后面所有优化都会被削弱。与其反复调内容,不如先把这几行配置确认清楚。