常见问题

蜘蛛池入口页的 robots.txt 该怎么写?先确认它没把搜索蜘蛛挡在门外

很多蜘蛛池入口页抓取异常,问题不在链接,而在根目录的 robots.txt。本文理清 robots.txt 对搜索蜘蛛的影响,列出几种常见的配置失误、Crawl-delay 的实际作用,以及上线前后的自查步骤,帮你把入口页这道门先打开。

常见问题

蜘蛛池入口页的 robots.txt 该怎么写?先确认它没把搜索蜘蛛挡在门外

做蜘蛛池入口页时,大多数人把精力放在链接怎么写、铺多少、放在哪一层,却很少回头看根目录里那个 robots.txt 文件。可对搜索蜘蛛来说,robots.txt 是它访问一个域名时最先读取的内容之一,读完之后才决定哪些路径可以抓、下次什么时候再来。入口页如果恰好落在被禁止的路径里,链接铺得再密也没有机会被跟进。

robots.txt 在抓取流程里的位置

搜索蜘蛛到达一个域名时,通常先请求根目录下的 /robots.txt。这个文件本身不是收录开关,它只控制抓取,不控制索引。也就是说,被 Disallow 的 URL 依然可能出现在结果里,因为它可能从别处被链接发现,但搜索引擎不会去抓取页面内容,自然也不会顺着页面里的链接继续往下走。

对蜘蛛池入口页来说,这一点很关键:入口页的价值就在于被抓取、然后被跟随链接。一旦它落在 Disallow 范围内,跟进目标 URL 这件事基本就断了。

入口页常见的几种 robots 配置失误

1. 模板里默认写了 Disallow: /

不少站点在测试阶段会用全站禁止来挡爬虫,上线时忘了删。表现是:日志里能看到蜘蛛请求过 robots.txt,之后几乎不再深入抓取。改掉之后也不会立刻恢复,因为搜索引擎对 robots.txt 有缓存。

2. Disallow 覆盖了入口页所在目录

比如入口页放在 /go/ 或 /links/ 这类目录下,而 robots.txt 里恰好有一条 Disallow: /go/。这种失误不容易被发现,因为首页和栏目页抓取一切正常,只有入口页安静得很。排查方法很直接:在日志里看搜索蜘蛛有没有请求过入口页的 URL。

3. robots.txt 本身返回异常

robots.txt 不存在时应当返回 404,此时搜索引擎按全部允许处理。但如果服务器把不存在的路径 301 到首页,或者返回一个 HTML 页面(200 状态加 text/html),解析就会出问题。有些服务器还可能返回 500,这会被当作临时错误,抓取行为变得不稳定。打开浏览器直接访问站点根目录下的 /robots.txt,看一眼返回的状态码和内容类型,是最省事的确认方式。

Crawl-delay 不用当真,但也别乱写

robots.txt 里可以写 Crawl-delay,不过主流搜索引擎对它的支持并不一致,有的干脆忽略。真正影响抓取节奏的是站点响应速度、内容更新频率,以及入口页本身的表现。如果确实要写,也别写太大,几秒的延迟在入口页数量较多时会把整体节奏拖得很慢。

把 Crawl-delay 当成限流手段,通常得不到想要的结果:它既挡不住繁忙抓取,也容易误伤自己的入口页。

上线前后的自查清单

  • 直接访问站点根目录下的 /robots.txt,确认状态码是 200,内容类型是纯文本。
  • 检查 User-agent 分组,避免把规则写在错误的组里,导致对搜索引擎不生效或误伤其他爬虫。
  • 确认入口页所在目录没有出现在任何 Disallow 规则中,尤其是从旧模板继承下来的规则。
  • 需要的话可以加上 Sitemap 行,但不要指望它替代入口页的链接发现作用。
  • 在日志里核对搜索蜘蛛是否请求过 robots.txt,以及请求之后是否继续访问入口页。

改完不会马上生效

搜索引擎对 robots.txt 有缓存,周期从几小时到一天不等。改完当天看不到变化属于正常,不必反复调整。观察几天日志,看入口页是否重新出现抓取记录,再判断改动是否起了作用。

最后提醒一句:robots.txt 只是把门打开。门开了之后,搜索蜘蛛能不能真的走到目标 URL,还要看入口页本身是否正常返回、链接是否可解析、页面是否值得继续跟进。这几件事是叠加的,缺任何一环都可能卡住。