搭蜘蛛池时,很多人把精力放在域名、IP、模板上,却忽略了 robots.txt 和页面里的 meta robots。这两样东西一个在站根,一个在页面的 head 里,作用都是告诉蜘蛛“能抓什么、不能抓什么”。配错一处,前面铺的入口页可能全都白做。
两者管的范围不一样
robots.txt 是站点级别的约定,蜘蛛进站前先取一次,决定要不要继续爬某个目录或某类 URL。meta robots 是页面级别的指令,蜘蛛已经把页面抓下来之后才会读到,用来决定这个页面要不要进索引、页内链接要不要继续跟。
简单说:robots.txt 管“来不来”,meta robots 管“抓到之后怎么处理”。两者不冲突,但生效顺序不同,也不能互相替代。
入口页一般怎么配
蜘蛛池入口页的作用是提供一个可被抓取的跳转点,所以常规配置是“允许抓取 + 允许索引 + 允许跟随链接”:
- robots.txt 里不要用 Disallow: / 把整站关掉,入口页被挡在外面,后面就无从谈起。
- 避免在入口页加 noindex。入口页本身不需要排名,但被索引过、被抓过的页面,后续蜘蛛回访的概率通常更高。
- 页内指向目标页的链接不要加 nofollow,否则等于自己把通路掐断。
- 如果入口页同站还有后台、登录、测试目录,单独 Disallow 掉即可,不必一刀切。
几处容易被忽略的地方
Crawl-delay 与请求频率
部分蜘蛛支持 robots.txt 里的 Crawl-delay。设得过大,蜘蛛回访一次要等很久,入口页更新再勤也没意义;设得过小甚至不设,又可能给服务器带来压力。多数情况下,靠服务器日志观察实际抓取频率,再在服务器层做限速,比只依赖 Crawl-delay 更可靠。
Sitemap 声明的位置
robots.txt 里写 Sitemap 那一行,是给蜘蛛一个额外的发现入口,不是必须,但成本极低。注意写完整 URL,且该 Sitemap 要能正常返回 200。
meta robots 与 X-Robots-Tag
除了页面里的 meta 标签,HTTP 响应头里的 X-Robots-Tag 也能起同类作用。如果两者同时存在且指令冲突,通常以更严格的那个为准。排查入口页不被抓时,两边都要看一眼。
屏蔽与放开的边界
常见的两种极端:一种是把 robots.txt 写成 Disallow: /,以为“先挡起来更安全”,结果是蜘蛛根本不进;另一种是完全不写,站点里大量重复参数页、搜索结果页被反复抓,白白消耗抓取预算。
判断标准其实很简单:你希望蜘蛛抓的路径,就别挡;你不希望它浪费时间的路径,就明确挡掉。含糊不清的配置,最后往往由蜘蛛来替你决定。
上线前后可以照着做的检查
- 访问 /robots.txt,确认返回 200,且内容不是程序模板的默认值。
- 确认没有 Disallow: / 之类的全站屏蔽。
- 随机抽几个入口页,看 head 里有没有误加的 noindex、nofollow。
- 检查指向目标页的链接是否可正常跟随,有没有被 JS 事件拦截。
- 上线几天后看日志,确认蜘蛛确实读到了 robots.txt 并继续抓取。
几个常见误区
- 以为 robots.txt 能保密:它只是约定,不是访问控制,敏感路径应该用权限或 IP 限制来处理。
- 用 robots.txt 代替删除:已被索引的 URL 即使被 Disallow,也可能仍留在索引里,需要配合 noindex 等方式处理。
- 所有子域共用一份配置:robots.txt 按主机名生效,子域要单独提供。
把这几处理顺,入口页至少不会在第一步就被自己挡住。剩下的,才是模板、IP、更新节奏这些更细的活。