蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 meta robots:哪些設定會把蜘蛛挡在门外

入口頁批量上线时,robots.txt 和 meta robots 常被当成随手一填的配置,结果把蜘蛛挡在门外。本文拆解這两類指令的作用范围、常见誤配和检查方法,帮助你在不影响抓取的前提下控制索引范围。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 meta robots:哪些設定會把蜘蛛挡在门外

很多入口頁的問题不是内容不够,而是蜘蛛根本没被允许進来。robots.txt 和 meta robots 一個在站点层,一個在頁面层,作用范围不同,誤配後的表現也不一样。

robots.txt:站点层的通行規則

robots.txt 放在域名根目錄,只對目前域名生效。它本身不是强制标准,主流搜尋引擎會遵守,但不同爬虫對通配符、正則和 Crawl-delay 的支持並不一致。

  • User-agent: * 與 Disallow: / 组合會把整站挡掉,這是入口頁最嚴重的誤配之一。
  • Disallow 只寫目錄不寫斜杠,可能匹配到更多路径;寫 /tmp 會连带挡住 /tmp-abc 這類地址。
  • Allow 與 Disallow 的優先級在不同爬虫里表現不同,重要目錄建议單獨放行並复驗。
  • Crawl-delay 對配額紧張的小站不一定有用,部分爬虫會直接忽略。
  • Sitemap 声明可以放在 robots.txt 里,但不要和 Disallow 規則冲突。

動態生成时的坑

有些程序按环境生成 robots.txt,測試环境返回 Disallow: /,上线後没有切換。還有的服務器把不存在的 robots.txt 返回 200 加一段空内容,爬虫可能把它当成有效規則,也可能因為解析失敗而停止深入。

meta robots:頁面层的開關

meta robots 寫在 head 里,只對目前頁面生效。常见取值包括 noindex、nofollow、noarchive、nosnippet。

  • noindex 是入口頁最需要警惕的一項:頁面能被抓,但不會進入索引,批量套模板时很容易带進来。
  • nofollow 會阻止蜘蛛跟随頁面連結,入口頁靠連結把蜘蛛導向目标頁,誤配後鏈路等于断掉。
  • noarchive 只影响快照,不影响抓取和索引,通常不必動。
  • 多個 meta robots 同时出現时,爬虫的合並策略不一致,最好只保留一條。

X-Robots-Tag 與响應头

有些站点通過 HTTP 响應头里的 X-Robots-Tag 控制索引,這個指令對 PDF、图片等非 HTML 资源同样有效。如果服務器配置里统一加了 noindex,頁面里的 meta 标簽寫得再對也没用。

常见誤配组合

  1. robots.txt 放行,但 meta robots 寫了 noindex:蜘蛛来抓,不建索引。
  2. robots.txt 屏蔽目錄,頁面里却期待被抓:蜘蛛可能连請求都不發。
  3. 屏蔽 CSS 與 JS:部分爬虫需要渲染才能理解頁面,屏蔽後拿到的内容不完整。
  4. 測試环境規則带到正式环境:整站被挡,或者只放行了少數路径。
  5. 多域名共用一份 robots.txt:A 域名的規則被套到 B 域名上。

上线前後怎么检查

用爬虫视角而不是浏览器视角看問题。

  • 直接訪問 /robots.txt,確認返回 200、内容與预期一致,没有被缓存成舊版本。
  • 用搜尋资源平台提供的 robots 測試工具驗證具体 URL 是否被允许。
  • 查看頁面源代碼里的 meta robots,而不是只看渲染後的 DOM。
  • 抓一次响應头,確認没有意外的 X-Robots-Tag。
  • 上线後观察日誌中目标 URL 的抓取记錄,如果入口頁有訪問、目标頁没有,優先检查 nofollow 和連結是否可抓。
robots.txt 和 meta robots 只影响抓取與索引的意愿,不决定頁面质量。放行之後能不能被收錄,仍然要看内容與站点整体表現。

批量站点最容易在模板和服務器配置里埋下這两類指令。建议把 robots.txt 與 meta robots 纳入上线检查項,改動一次就复驗一次,避免一個小配置把整條蜘蛛鏈路挡在门外。