常见問题

入口頁與目标 URL 的 robots.txt 規則冲突时,搜尋蜘蛛按哪個执行?

入口頁允许抓取,目标 URL 却被 robots.txt 禁止,搜尋蜘蛛會听谁的?本文梳理 robots.txt 按目标 URL 所在域名生效的逻辑、meta robots 與 X-Robots-Tag 的差別,並给出排查顺序和日誌驗證方法,帮助减少無效抓取與誤判。

常见問题

入口頁與目标 URL 的 robots.txt 規則冲突时,搜尋蜘蛛按哪個执行?

先搞清一個前提:robots.txt 按“被訪問的 URL”生效

很多人把入口頁和目标 URL 当成一個整体,觉得入口頁的 robots.txt 寫允许抓取,搜尋蜘蛛就會顺着連結去抓目标 URL。實际規則不是這样:搜尋蜘蛛在訪問某個 URL 之前,會先讀取该 URL 所在主机的 robots.txt。入口頁属于 A 域名,就查 A 域名的 robots.txt;目标 URL 属于 B 域名,就查 B 域名的 robots.txt。两者互不覆盖。

所以,入口頁 robots.txt 允许抓取,只能保證搜尋蜘蛛可以讀入口頁、解析里面的連結;目标 URL 能不能被抓取,要看目标 URL 自己所在域名的 robots.txt 是否放行。

几種常见冲突场景

入口頁允许,目标 URL 被 Disallow

這是最典型的情况。入口頁返回 200,連結也能被解析,但搜尋蜘蛛在准备抓目标 URL 时,讀到目标域名 robots.txt 里的 Disallow,通常會跳過该 URL。此时日誌里可能只看到入口頁被訪問,目标 URL 没有請求记錄。

如果目标 URL 是第三方站点,而且對方明确不允许抓取,不建议用入口頁去绕。搜尋蜘蛛最终以目标 URL 的 robots.txt 為准,强行操作通常不會带来有效结果。

入口頁被 Disallow,目标 URL 允许

反過来,如果入口頁自己所在路径被 robots.txt 禁止,搜尋蜘蛛可能根本不會請求入口頁。入口頁都讀不到,里面的連結自然無法被發現。常见原因是入口頁放在 /c/、/go/、/out/ 這類被整目錄禁止的路径下。

  • 检查入口頁 URL 是否命中 Disallow 規則;
  • 检查規則里的通配符和结尾符号,避免誤伤;
  • 確認 robots.txt 本身返回 200,而不是 404 或 5xx。

两邊都允许,但目标 URL 有 meta noindex

robots.txt 管的是“能不能抓”,meta robots 和 X-Robots-Tag 管的是“抓取後怎么處理”。如果目标 URL 允许抓取,但頁面里有 noindex,搜尋蜘蛛仍然可以抓取和解析,只是通常不會把它放進索引。這類頁面在日誌里能看到請求,但收錄表現不同。

排查时不要只看“有没有被抓”,還要区分“被抓但没索引”和“根本没被抓”,两者原因和解决方向不同。

跨域名、子域和协议也要分開看

robots.txt 的作用范围按主机划分,以下情况都要單獨處理:

  • 子域:a.example.com 和 b.example.com 各自讀取自己的 robots.txt;
  • 协议:http 與 https 在部分實現中被视為不同来源,迁移後要確認新协议下的 robots.txt 可訪問;
  • 端口:非标准端口訪問时,robots.txt 的讀取位置也可能不同;
  • 大小寫與路径:Disallow 路径区分大小寫,寫错一個字母可能就放行了。

一個可执行的排查顺序

  1. 先列出入口頁 URL 和目标 URL,分別标注它們所属的域名或子域。
  2. 訪問入口頁域名下的 robots.txt,確認入口頁路径没有被禁止。
  3. 訪問目标 URL 域名下的 robots.txt,確認目标路径没有被禁止。
  4. 检查目标 URL 的 meta robots 和响應头里的 X-Robots-Tag,確認是否 noindex、nofollow。
  5. 在服務器日誌中搜尋目标 URL,看搜尋蜘蛛是否請求過;如果從未請求,優先怀疑 robots.txt 或連結未被發現。
  6. 如果入口頁有跳轉或中間层,逐层確認每一跳的 URL 是否都允许抓取。

實操建议

如果入口頁和目标 URL 都是你自己能控制的站点,最好把規則统一起来:入口頁允许抓取,目标 URL 也允许抓取;需要屏蔽的測試頁、參數頁,用明确的路径規則處理,不要图省事整站 Disallow。規則越模糊,越容易把正常入口一起挡住。

如果目标 URL 是外部站点,先看對方 robots.txt 的態度。對方不允许抓取,就不要把入口頁当作绕過通道。搜尋蜘蛛的行為會以目标 URL 所在主机的規則為准,入口頁寫得再“干净”也改變不了這一点。

最後提醒一句:robots.txt 只是抓取規則的一部分,不承诺收錄,也不保證排名。它解决的是“能不能来、能不能讀”的問题,内容质量和站点整体表現仍然决定後續结果。