蜘蛛池的入口頁能不能被抓,很多时候不是内容质量或响應速度的問题,而是第一道门槛就没過:robots.txt。蜘蛛在抓取一個 URL 之前,通常會先請求站点的 robots 文件,讀完規則之後才决定這個地址要不要跟下去。入口頁放行、内頁挡死,或者反過来,都會直接改變蜘蛛在池子里的爬行路线。這篇把 robots.txt、meta robots 和 X-Robots-Tag 在蜘蛛池场景下的取舍讲清楚。
蜘蛛的第一次請求:robots.txt 决定入口頁的准入
池子刚搭好,最容易被忽略的一步就是检查 robots 文件。有些站点從測試环境直接搬過来,配置里還留着 Disallow: /,蜘蛛打開一看就掉头走了,入口頁布置得再整齐也不會被訪問到。反過来,如果全站一條限制都没有,蜘蛛又可能把後台、搜尋结果頁、带參數的列表頁一起翻一遍,把抓取量消耗在没價值的地方。
robots.txt 的作用范围是“允不允许来抓”,不涉及“抓到之後怎么處理”,這一点必须先分清,後面的组合配置才不會乱。
蜘蛛池里常见的三種配置思路
全站放行
入口頁本身就是真實内容站、没有需要隐藏的目錄时,直接放行是最简單的做法。文件里留空 Disallow,再寫一行 Sitemap 地址即可。這種配置的好處是路径不确定时不會誤伤,代價是蜘蛛可能把一些重复參數頁也一起抓走。
只放行入口頁所在目錄
当站点上還挂着用戶中心、後台、站内搜尋這類不该被索引的路径时,可以用 Allow 和 Disallow 配合,把蜘蛛的注意力集中在入口頁以及它指向的目标頁上。這里要注意優先級規則:路径更具体、長度更長的規則會覆盖更宽泛的規則,寫的时候最好從宽到窄逐條核對一遍。
用通配符過滤參數
入口頁如果带 ?page=、?tag=、?from= 這類參數,蜘蛛很容易在同一個模板上無限翻頁。像 Disallow: /*?page= 這样的規則能挡住大部分重复路径,但合法分頁也可能一起被挡。分頁要不要放行,取决于這些頁面上有没有值得让蜘蛛跟下去的連結。
meta robots 與 X-Robots-Tag:頁級微調
robots.txt 管的是“要不要来抓”,meta robots 管的是“抓到之後怎么處理”。想让蜘蛛抓取頁面里的連結但不索引這個頁面本身,就得靠 meta robots 里的 noindex,而不是靠 Disallow。
两者混用會出現一個典型問题:被 robots.txt 屏蔽的頁面,蜘蛛根本讀不到它上面的 noindex,于是這個 URL 有可能長期留在索引里,既没被抓也没有被清掉。
X-Robots-Tag 放在 HTTP 响應头里,适合 PDF、图片這類非 HTML 资源,批量下發比逐頁改模板省事。入口站如果混放了多種文件類型,用响應头统一控制會比改頁面更稳妥。
三個容易被忽略的坑
- 屏蔽規則寫太宽:本想挡住某個子目錄,结果寫成整站屏蔽,入口頁一條連結也传不出去。
- 挡住了自己依赖的跳轉路径:入口頁到目标頁中間要走一次 301,而跳轉落在被封目錄里,蜘蛛跟到一半就停了。
- 測試和线上共用一份文件:上线时忘了改回来,蜘蛛看到的就是測試期的限制規則。
上线前的检查清單
- 直接用浏览器訪問 /robots.txt,確認返回的是正常頁面,而不是 404 或跳轉。
- 逐條讀 Disallow,確認没有把入口頁、目标頁所在目錄一起挡掉。
- 確認 Sitemap 地址指向的是线上域名。
- 在頁面源碼里搜 meta robots,確認没有誤留 noindex。
- 抽查几個入口頁在服務器日誌里的抓取狀態碼,確認是正常返回而不是超时或被拒。
和 sitemap、站長平台的分工
robots.txt 决定“允许抓哪些”,sitemap 决定“希望先抓哪些”,站長平台里的抓取測試工具用来驗證單條 URL 是否可抓。三者不冲突,但有優先級:robots 的屏蔽永遠大于 sitemap 的推荐。
池子規模上来之後,建议把 robots 規則固定成一份版本化的配置,改動时留记錄。否則某次随手調整,可能让一批入口頁整片關在门外,而從日誌上看只是抓取量慢慢變少,很难第一時間定位到原因。
robots.txt 不是可選項,而是蜘蛛池的第一层结构设計。規則寫得越清楚,蜘蛛的爬行路线越确定,抓取效率才谈得上稳定。