蜘蛛池知识

蜘蛛池入口頁的 robots 指令:哪些该放開,哪些该收紧

robots.txt、meta robots 和 X-Robots-Tag 三種指令作用范围不同,混用容易把入口頁的發現路径堵死。本文梳理入口頁该放開和该收紧的几類情况,說明 noindex 與 Disallow 的先後顺序,並给出一份改完規則後的检查清單。

蜘蛛池知识

蜘蛛池入口頁的 robots 指令:哪些该放開,哪些该收紧

robots 相關指令是入口頁配置里最容易被忽略、又最容易造成誤伤的一环。它本身不是安全措施,只是给爬虫的一份“說明文件”,告诉對方哪些可以抓、哪些不建议抓。入口頁的作用是让蜘蛛發現並顺着連結走到目标頁,如果 robots 配置把這條路堵住,前面的域名、IP、模板工作基本白做。

三種常见寫法,作用范围不一样

  • robots.txt:放在域名根目錄,對整個站生效,按 UA 或目錄做允许/禁止。蜘蛛要先取這個文件,再决定抓什么。
  • meta robots:寫在頁面 head 里,只對目前頁生效,能設定 noindex、nofollow、noarchive 等。
  • X-Robots-Tag:放在 HTTP 响應头,效果類似 meta robots,适合非 HTML 文件或不想改模板的场景。

三者優先級不完全相同,但共同点是:Disallow 只是“別来抓”,不等于“別收錄”。如果頁面已被別處連結指向,仍可能以無摘要的形式出現在结果里。想真正让頁面登出索引,通常先用 noindex 让蜘蛛抓到並讀到指令,等頁面從索引里登出後,再考虑用 robots.txt 屏蔽。

入口頁该放開的几類

入口頁的职责是“被發現”,所以大多數情况下應该允许抓取。需要重点检查的是:

  • 入口頁本身没有被誤寫進 Disallow,批量生成模板时最容易整段複製错。
  • CSS、JS 這類渲染资源不要屏蔽。蜘蛛要执行脚本才能看到完整内容时,屏蔽资源可能導致它按空白頁理解。
  • 跳轉鏈上的中間頁,如果靠 JS 或 meta refresh 跳轉,更需要允许抓取,否則蜘蛛到不了目标頁。
  • 如果入口頁存在大量篩選參數,可以只放開必要參數,把無意义组合放進 Disallow,减少無效抓取。

该收紧的几類

  1. 後台、測試頁、資料接口:這些頁面没有分發價值,被抓只會消耗资源,也容易暴露站点结构。
  2. 重复内容頁:同一批入口頁的多個排序、分頁變体,可以用 canonical 或 robots 收敛,不必全部放開。
  3. 已决定停用的入口頁:如果只是不想让它再被抓,用 robots.txt 屏蔽比直接删掉更省事;如果整個入口頁群要退役,返回 410 或 301 到有效頁更清晰。

几個反复出現的誤区

第一個誤区是用 robots.txt 当作“隐藏入口頁”的手段,以為蜘蛛看不到就不會识別出這是入口頁群。實际上入口頁一旦被外部連結、歷史记錄或 sitemap 暴露,屏蔽指令反而更顯眼,而且這種方式對真實訪客同样無效。

第二個誤区是“先全站 Disallow,观察一阵再说”。全站屏蔽後再恢复,蜘蛛重新抓取的节奏往往比预期慢,入口頁的發現周期會被拉長。如果只是担心某個目錄,按目錄屏蔽即可。

第三個誤区是同一批入口頁里混用 noindex 和 Disallow。两者组合的结果是“蜘蛛抓不到、也就讀不到 noindex”,頁面可能長期停留在索引里。需要用 noindex 时,就先別用 Disallow。

把 robots 当成一份给爬虫的通行說明,而不是安全鎖。入口頁要能被抓到,中轉环节要能走通,不想被索引的頁面用 noindex 處理,不想被抓的目錄用 Disallow 處理——顺序別搞反。

落地时的检查清單

  • 入口頁域名根目錄是否有 robots.txt,内容是否符合预期,是否残留測試环境的屏蔽規則。
  • 入口頁模板里是否带上了不该有的 meta robots,常见于整站複製的模板。
  • 服務器响應头里是否有多余的 X-Robots-Tag。
  • 停用、改版、迁移過的入口頁,robots 規則是否同步更新,避免“頁面已 301 但舊規則還屏蔽着新路径”。
  • 改完規則後,用抓取測試工具實际驗證一次,而不是只看配置文件。

規則本身不复杂,难的是保持一批入口頁的配置一致。批量生成时把 robots 相關項做成统一模板,比事後逐個排查省力得多。