蜘蛛池知识

蜘蛛池的 robots.txt 与 meta 指令:哪些配置会把自己的路堵住

蜘蛛池入口页除了内容,还有一层看不见的指令:robots.txt、meta robots、canonical。它们不决定爬虫来不来,却决定爬虫能不能走通。本文梳理这些指令的常见用法与误用,包括 noindex 与 Disallow 的区别、nofollow 的风险、canonical 的边界,并给出一套可参考的配置组合与验证思路。

蜘蛛池知识

蜘蛛池的 robots.txt 与 meta 指令:哪些配置会把自己的路堵住

蜘蛛池的入口页是给爬虫看的,而“给爬虫看”其实有两个层面:一层是页面上能看到的内容,另一层是页面里那些看不见的指令,比如 robots.txt、meta robots、X-Robots-Tag 和 canonical。很多人把精力全放在第一层,第二层随手一配,结果等于在自家门口挂了一块“谢绝入内”的牌子。

一、robots.txt:先想清楚你要让谁来

robots.txt 是放在域名根目录的纯文本文件,爬虫在抓取之前通常会先读它。在蜘蛛池里,它最常见的两种误用是:

  • 整站 Disallow:有人为了“避免入口页被收录”,直接写 User-agent: * 加 Disallow: /。结果是主流爬虫连入口页都不会抓,跳转也就无从谈起。想避免收录,应该用 noindex,而不是用 Disallow。
  • 只屏蔽一部分,忘了目标页:入口页允许抓取,但目标页所在目录被 Disallow 掉了,爬虫走到半路被拦下。

需要明确的是,robots.txt 是一份约定,不是防火墙。它依赖爬虫主动遵守,并不会阻止任何不守规矩的请求。所以它解决的是“合规抓取”的问题,不解决“别人来不来”的问题。

二、meta robots 与 X-Robots-Tag:控制收录,而不是控制抓取

noindex 的含义是“别把这一页放进索引”,它并不阻止爬虫抓取页面,也不阻止爬虫顺着页面里的链接继续走。这一点在蜘蛛池里很关键:入口页可以同时做到“被爬”和“不被收录”。

不过有几个细节需要留意:

  • nofollow 是另一回事:如果在入口页加上 nofollow,等于告诉爬虫别顺着这里的链接走,这恰好切断了通往目标页的路。除非确实不想让它走,否则不要随手加。
  • noindex 与 Disallow 不要同时用:如果页面被 Disallow 挡住,爬虫读不到页面里的 noindex,反而可能因为外部链接让这个 URL 留在索引里。想不收录,就让页面被可抓取地读到 noindex。
  • X-Robots-Tag 是 HTTP 头的写法:适合非 HTML 资源,比如 PDF、图片。入口页是 HTML 的话,meta 标签更直观。

三、canonical:一种建议,不是命令

把入口页的 canonical 指向目标页,是有些人会做的操作,希望把信号集中过去。但要理解,canonical 是提示,不是指令,爬虫可以采纳也可以忽略。如果入口页和目标页内容差异很大,这个指向基本不会有什么作用;如果内容高度相似,还可能让爬虫干脆只保留一个版本。

更稳妥的做法是:目标页之间不要互相 canonical,也不要把大量入口页的 canonical 都指向同一个目标页,形成明显的多对一聚集。

四、一套可以参考的组合

如果入口页的定位就是“可抓取、不收录、能跳转”,可以按这个思路配置:

  1. robots.txt 允许爬虫抓取入口页路径和目标页路径,只屏蔽后台、站内搜索结果这类无意义路径。
  2. 入口页加 meta robots 的 noindex,但不加 nofollow。
  3. 跳转用普通链接或 301,避免层层嵌套的 JS 跳转。
  4. 目标页保持可抓取、可收录,不加 noindex。
  5. 入口页不主动往站长平台的提交接口里推,避免把不想收录的页面推出去。

五、几个常见的坑

  • 指令反复改:今天加 noindex,明天删掉,后天又加回来。同一批 URL 的指令频繁变动,容易让爬虫做出难以判断的选择,也让日志变得难分析。
  • 用 robots 屏蔽入口页,又抱怨没蜘蛛:这是最典型的自相矛盾。
  • 把指令当成收录开关:无论是 robots 还是 noindex,都只是表达意愿,最终是否收录由搜索引擎的规则决定。指令能做的是减少干扰,不是保证结果。
  • 忽略服务器返回状态:robots.txt 如果返回 5xx,爬虫可能暂停抓取;返回 404 通常视为没有限制。这两种状态带来的行为差别不小,值得在日志里核对。
把指令层当成入口页的一部分来设计,而不是上线前顺手填的一栏。它本身不产生内容,却会影响内容有没有机会被看到。

如果要给一个操作建议:先用少量入口页把 robots、meta、canonical 这套配置跑一遍,看日志里爬虫是否真的进到了入口页,又是否继续走到了目标页,确认之后再扩量。指令这种东西改一次影响一片,值得多花半天时间验证。