常见問题

入口頁誤開 robots.txt 屏蔽,搜尋蜘蛛還會跟進里面的目标連結吗?

很多人排查蜘蛛池入口頁时只看連結寫法和服務器响應,忽略了 robots.txt 這一层。一行 Disallow 就可能让搜尋蜘蛛無法讀取入口頁,頁面上的目标連結也随之失去被發現的机會。這篇文章說明 robots.txt 的作用邊界、几種常见的誤屏蔽寫法,以及從工具和日誌两端自查的顺序。

常见問题

入口頁誤開 robots.txt 屏蔽,搜尋蜘蛛還會跟進里面的目标連結吗?

给蜘蛛池入口頁做排查时,robots.txt 是最容易被忽略的一环。很多人只盯着入口頁的 HTML、連結寫法和服務器响應,却没注意一行 Disallow 就可能让搜尋蜘蛛连頁面都不讀,後面的目标連結自然無從谈起。下面把常见誤配置和自查方式理一遍。

robots.txt 约束的是抓取,不是收錄

先明确一件事:robots.txt 是给蜘蛛看的抓取许可协议。它决定蜘蛛能不能請求某個路径,並不直接决定 URL 是否出現在结果里。

  • Disallow:蜘蛛請求该路径时會主動放弃抓取,頁面内容讀不到。
  • Allow:在整体屏蔽的前提下開一個口子。
  • 規則冲突时,一般按路径匹配最長、最具体的那條执行;長度相同时 Allow 通常優先。

對蜘蛛池入口頁来说,如果入口頁本身被 Disallow,蜘蛛不會讀取頁面,也就看不到頁面上指向目标 URL 的連結,這條發現鏈路就断了。

常见的誤屏蔽寫法

1. 一行通配把整站關掉

Disallow: / 是最典型的例子——本来只想挡後台目錄,结果把全站挡了。測試环境抄来的配置没删干净,也很容易出現這種情况。

2. 带參數的規則誤伤入口頁

像 Disallow: /*? 這類規則,會连同正常带參數的入口頁一起挡住。入口頁如果带分頁、篩選或統計參數,就要特別留意這一行。

3. robots.txt 本身返回 5xx

多數搜尋引擎拿到 5xx 的 robots.txt 时會保守處理,短時間内减少甚至暫停對该站点的抓取。反過来,返回 404 通常被视為没有限制,可以正常抓取。所以“临时關站就把 robots.txt 删掉”並不是一個适合長期使用的手段。

4. 被 CDN 或反向代理缓存了舊版本

上线新規則後,如果邊缘节点還缓存着舊的 robots.txt,蜘蛛看到的就是上一版。改完记得刷新缓存,並實际拉取一次確認内容。

入口頁被屏蔽後,目标 URL 還有別的發現途径吗

有,但通常不如正常抓取顺畅:

  • 目标 URL 被其他未被屏蔽的入口頁或外部頁面連結。
  • 目标 URL 出現在提交的 sitemap 或 RSS 中。
  • 目标 URL 通過主動提交接口被推送。

這些方式只是提供發現线索,具体是否抓取、何时抓取,仍由搜尋引擎自己决定。所以把入口頁的 robots.txt 修好、恢复正常的連結發現路径,通常比另找渠道更省事。

自查步骤

  1. 直接訪問站点根目錄下的 robots.txt,確認返回 200 且内容是最新版。
  2. 逐行核對 Disallow,對照入口頁的真實路径,特別注意通配符和末尾斜杠。
  3. 用搜尋引擎提供的 robots.txt 測試工具,輸入一個入口頁 URL,看判定结果。
  4. 核對服務器日誌:如果入口頁長期没有蜘蛛請求记錄,而站内其他頁面有,基本可以鎖定是抓取层被挡住了。
  5. 修好後观察一段時間日誌,確認蜘蛛能重新請求入口頁,並顺着連結訪問目标 URL。

容易和 robots.txt 搞混的两個東西

  • meta robots 或 X-Robots-Tag 里的 noindex:它不阻止抓取,蜘蛛仍然會讀取頁面、跟随連結,只是被标记的 URL 不應出現在结果中。也就是说,加了 noindex 的入口頁,里面的連結通常還是會被跟過去。
  • 屏蔽目錄和屏蔽單個 URL 的差別:robots.txt 是路径級別的,寫错一层目錄,可能连带影响下面的所有入口頁。
一句话理解:robots.txt 挡的是“能不能讀”,不是“能不能被收錄”。入口頁讀不到,頁面上指向目标 URL 的連結就不會被發現。

最後提醒一句,robots.txt 属于抓取层配置,改完不要只看面板提示,最好用實际請求和日誌双重確認。規則越简單越好,能用一條精确路径解决,就不要轻易上通配符。