入口页在蜘蛛池里的角色比较特殊:它的主要任务是让蜘蛛进来、顺着链接走到目标页,而它自己往往并不需要被索引。正因为这个定位,robots.txt、meta robots 和 X-Robots-Tag 这三条控制线很容易被写冲突——想屏蔽索引,结果把抓取也一起掐掉了。
抓取和索引是两件独立的事
很多配置问题的根源,是把“蜘蛛能不能来”和“页面能不能被收录”当成了同一件事。实际上:
- 抓取决定蜘蛛能不能把页面内容取回去,robots.txt 主要作用在这一层。
- 索引决定取回内容后要不要建库、要不要在搜索结果里出现,meta robots 与 X-Robots-Tag 作用在这一层。
- 链接传递是另一条线,nofollow 类指令影响的是链接信号的传递,而不是抓取本身。
把这三层混在一起写,就会出现“蜘蛛没来过,页面却被收录了”这种看起来矛盾、其实很常见的现象。
三种指令各自管什么
- robots.txt:放在域名根目录,按路径屏蔽抓取。它是抓取层的开关,一旦屏蔽,蜘蛛不会再请求该路径下的 URL,也就读不到页面里的任何 meta 指令。
- meta robots:写在页面 head 里,需要蜘蛛把页面抓回去才生效。常见值是 noindex、nofollow、noarchive、nosnippet 等组合。
- X-Robots-Tag:写在 HTTP 响应头里,适合非 HTML 文件,也可以在服务器层给某个目录统一批量加上,不用改模板。
如果同一页面上多条指令冲突,一般以更严格的那条为准。实际使用中不要指望靠“哪个优先”来兜底,配置保持一致比研究优先级更省事。
入口页最容易踩的坑
用 robots.txt 屏蔽入口页目录,本意是“别收录”,结果是蜘蛛连页面都读不到,URL 反而可能因为外链被收录成无摘要结果。
这是最典型的错配:disallow 挡住了抓取,meta noindex 就没机会被读到。正确的顺序应该是先允许抓取,再用 noindex 控制索引。反过来做,控制就落空了。
第二类问题是模板复制。入口页往往批量生成,robots 相关的 meta 如果写在公共模板里,改一个地方就影响全站。上线前要确认这些页面是不是和主站共用 head 模板,别把主站的索引状态一起改掉。
入口页的几种配置取向
没有统一答案,取决于你把入口页当成什么用:
- 纯跳板:允许抓取、加 noindex、链接保持可跟随。蜘蛛能进来、能顺着走,入口页自己不占索引位。
- 需要承接少量流量:允许抓取、不加 noindex、内容做扎实一些。但这类页面多了容易同质化,反而拉低整体观感。
- 过渡期或测试期:先用 noindex 观察抓取是否正常,稳定后再决定是否放开索引,避免一上线就产生大量低质索引。
无论选哪种,不要用 robots.txt 去关掉一个你希望蜘蛛访问的页面,这条底线比任何技巧都重要。
noindex 和 nofollow 要不要一起用
两者经常被捆绑,但作用完全不同。noindex 管的是这个页面自己不被收录,nofollow 管的是这个页面上的链接不传递信号。入口页的链接是指向目标页的,如果加了 nofollow,蜘蛛仍然可能爬过去做 URL 发现,但链接本身的意义会被削弱。
一般思路是:入口页自身 noindex 就够了,指向目标页的链接保持正常跟随,让爬取路径保持完整。除非入口页上还挂着一些你完全不想让蜘蛛碰的链接,再单独对这些链接加 nofollow,而不是整页一刀切。
crawl-delay 别当主力
crawl-delay 写在 robots.txt 里,只有部分搜索引擎支持,主流引擎基本已经不参考它。想控制抓取节奏,更实际的做法是:
- 从响应速度和日志入手,响应慢自然会被降低抓取频率;
- 用返回码表达状态,临时过载返回 503,而不是让请求一直超时;
- 减少无意义 URL 的数量,别让蜘蛛把时间耗在重复参数页上。
上线前的检查清单
- 用搜索引擎官方的 robots.txt 测试工具确认规则没写反、没误伤目标路径。
- 确认入口页本身返回 200,能正常被抓取,noindex 写在可被解析的位置。
- 确认改的是入口页模板,没有连带改到主站或其他重要目录。
- 观察日志里是否真的出现对入口页的抓取请求,以及后续是否对目标页发起请求。
- robots.txt 改动后给它一点时间生效,蜘蛛重新读取需要周期,别当天就下结论。
总的来说,入口页的 robots 配置不需要多复杂,关键是别自相矛盾:想让它被爬,就别在抓取层拦;不想让它被索引,就在索引层挡。理清这条线,比反复调参数更有效。任何控制手段都只是提高被抓取和被理解的概率,并不构成收录或排名的保证。