蜘蛛池知识

蜘蛛池入口頁的 robots 配置:抓取開關與收錄開關別搞混

robots.txt、meta robots 與 X-Robots-Tag 都能左右蜘蛛對入口頁的處理方式,但三者作用范围和生效前提並不相同。本文梳理各自的语义、入口頁常见的配置组合,以及 Disallow 與 noindex 叠加、CDN 覆盖規則等容易踩的坑,並给出驗證配置是否生效的检查方法。

蜘蛛池知识

蜘蛛池入口頁的 robots 配置:抓取開關與收錄開關別搞混

蜘蛛進入池子时,最先請求的经常不是入口頁,而是根目錄的 robots.txt。這個文件、頁面里的 meta robots、以及 HTTP 响應头中的 X-Robots-Tag,共同决定了蜘蛛能不能抓、抓到之後怎么處理。這三者里任何一個配错,入口頁都可能白做。

robots.txt 是站点級的抓取開關

robots.txt 只放在域名根目錄,靠 User-agent 分组生效,同一個域名下所有路径共享一份。它控制的是抓取,不是索引——被 Disallow 挡住的 URL,蜘蛛连内容都讀不到。

  • 別顺手全站禁止。入口頁要被抓取,就不要出現 “Disallow: /” 這類寫法,除非你确實只需要蜘蛛讀 robots.txt 本身。
  • 注意前缀匹配。“Disallow: /pool/” 會连带挡住 /pool/a.html 等所有下級路径,目錄粒度要提前想清楚。
  • 別挡静態资源。入口頁若依赖 CSS、JS 渲染,把资源目錄一起禁掉,蜘蛛看到的可能是残缺頁面。
  • 多域名多份規則。每個入口域名都有各自的 robots.txt,批量建池时要確認没有繼承到舊規則。

meta robots 與 X-Robots-Tag 的区別

meta robots 寫在 HTML 的 head 里,X-Robots-Tag 走 HTTP 响應头。两者指令集大致相同,但生效前提不同:meta 需要頁面被成功抓取並解析才能讀到,X-Robots-Tag 在拿到响應头的那一刻就能生效,非 HTML 文件也能用。

  • noindex 表示不要把该頁放進搜尋结果,但不影响抓取和連結跟随。
  • nofollow 表示不要沿着頁面上的連結繼續走,用它會影响入口頁向外传递的發現路径。
  • none 等價于 noindex 加 nofollow,使用时要想清楚它的双重含义。
  • X-Robots-Tag 的语法要寫全,例如 “X-Robots-Tag: noindex”,缺前缀會變成無效响應头。

入口頁常见的几種组合

入口頁的角色是“被蜘蛛發現、並把蜘蛛送到目标頁”,所以多數情况下希望它可抓取、連結可跟随。

  1. 只希望蜘蛛走一遍、不想让入口頁出現在结果里:保持可抓取,加 noindex,連結仍然 follow。
  2. 入口頁本身也是内容頁:正常 index、follow,重点轉向内容质量與更新节奏。
  3. 临时停用的入口頁:更推荐返回 404 或 410,而不是用 robots.txt 去遮,遮住只會让蜘蛛反复尝试。
  4. 測試阶段的頁面:用 X-Robots-Tag 在服務器层临时加 noindex,比改模板更快也更可控。

几個容易踩的坑

  • robots.txt 與 noindex 叠加。先 Disallow 再指望 meta noindex 生效,逻辑上不成立——蜘蛛讀不到頁面,自然也讀不到 meta。
  • CDN 或 WAF 返回的 robots.txt 不是你寫的那份。有些节点會自動生成或缓存舊版本,排查时要看實际响應内容,而不是看源站文件。
  • 返回 403、503 时怪 robots。那多半是防火墙或源站限流導致的,與 robots 規則無關,日誌里的狀態碼能区分。

怎么驗證配置是否生效

  • 用命令行带指定 User-Agent 請求一次,看响應头和正文字段是否與预期一致。
  • 在搜尋资源平台的 robots 測試工具里跑一遍,確認目标 URL 處于允许抓取狀態。
  • 翻 access log,看蜘蛛是否請求過 robots.txt、請求之後有没有繼續訪問入口頁。
robots 相關配置的改動成本很低,影响面却很大。動手之前先確認要的是“不被抓”還是“不被收錄”,這是两個完全不同的開關。