蜘蛛池知识

蜘蛛池入口页的 robots.txt:哪些该放开,哪些该挡住

蜘蛛池入口页的 robots.txt 常被忽略,却直接影响蜘蛛能否走进入口页、能走到哪一层。本文梳理 Disallow 与 noindex 的职责区别、列表与分页路径的放开原则、需要挡住的参数与后台目录,并给出一份上线前后可对照的检查清单。

蜘蛛池知识

蜘蛛池入口页的 robots.txt:哪些该放开,哪些该挡住

蜘蛛池的入口页通常不是手工维护的几页静态文档,而是按模板批量生成、按节奏更新的页面集合。运营者往往把精力放在跳转链、内链拓扑和抓取日志上,却容易忽略一个更前置的文件:robots.txt。它不决定页面能不能被收录,但决定蜘蛛能不能走进去、走到哪里为止。规则写得含糊,抓取预算就会消耗在没意义的路径上。

先分清职责:管抓取,不管收录

robots.txt 里的 Disallow 是抓取层面的约定,它只影响蜘蛛是否会请求某条 URL,不影响已经抓到的页面是否进入索引。想让某个页面彻底不出现在搜索结果里,通常要靠 noindex 之类的索引指令。把这两件事混在一起,就会出现一种典型的自相矛盾:页面被 Disallow 挡住了,同时又指望它上面写的 noindex 生效——蜘蛛进不去,也就看不到那条指令。

入口页常见的三类写法问题

全站一刀切 Disallow

测试环境遗留下来的全站屏蔽规则被带到了正式入口站,是最常见也最难察觉的一类。表现是抓取日志里几乎只有对首页和 robots.txt 的请求,其余路径一片安静。

把带参数的列表页整段封掉

入口页往往靠参数做分页或筛选,例如 ?page= 或 ?cat= 。如果为了省抓取预算把整段参数路径封死,蜘蛛也进不来,等于把入口页之间的通路砍断了。更稳妥的做法是只封掉无限组合的筛选参数,保留分页这类有明确顺序的路径。

多份规则互相打架

主站、子域、CDN 回源各留下一份 robots.txt,或者改版后新旧规则并存,蜘蛛按哪个执行取决于它请求到的域名。上线前应该确认唯一来源,避免同一批入口页在不同域名下得到相反的结论。

哪些路径值得放开

  • 入口页的列表与分页路径,保证蜘蛛能从第一页顺到后续页;
  • 指向目标页的中间跳转页,若跳转对蜘蛛可见;
  • 必要的静态资源目录,尤其是页面渲染依赖的脚本与样式;
  • sitemap 文件本身及其所在目录。

哪些路径建议挡住

  • 后台、登录、接口调试等与抓取无关的目录;
  • 站内搜索结果页与搜索参数入口,这类页面组合近乎无限;
  • 同一内容的重复视图,例如排序、时间戳参数生成的副本;
  • 明显是测试或占位的目录,避免被抓到后拉低整站印象。

和其他指令的分工

大致可以这样理解:robots.txt 决定蜘蛛要不要来,meta robots 和 X-Robots-Tag 决定来了之后怎么处理。挡抓取用前者,挡索引用后者。两者同时用在同一页面上,通常会得到一个不被抓、也没机会被索引的结果,这在资源页或中转页上有时是想要的,但要用得明白。

上线前后的检查清单

  1. 以蜘蛛的身份访问一下 robots.txt,确认返回 200 且内容不是缓存里的旧版本;
  2. 检查规则里是否出现了不该有的全站屏蔽;
  3. 确认入口页列表、分页、跳转页都不在 Disallow 范围内;
  4. 把 sitemap 地址写进 robots.txt,并确认该地址可访问;
  5. 上线后隔几天看一次抓取日志,核对被请求的路径和规则预期是否一致。

观察与调整

规则不是一次写完就固定不动。随着入口页结构变化,原本安全的屏蔽可能挡住新路径。判断依据仍然是日志:如果某类入口页长期没有抓取记录,先怀疑规则而不是蜘蛛。调整时一次只改一处,保留修改前后的日志对照,否则很难分清是规则起作用还是更新节奏变了。

robots.txt 是入口页的门禁,不是效果开关。把它写清楚,能让抓取走在该走的路上;至于页面最终表现如何,还要看内容、结构与更新节奏。