常见問题

入口頁被 robots.txt 屏蔽後,里面的目标 URL 還會被搜尋蜘蛛發現吗

robots.txt 的 Disallow 只是請求搜尋引擎不要抓取某個 URL,並不等于刪除索引,也不等于頁面里的連結會被自動跟進。入口頁一旦被屏蔽,蜘蛛讀不到内容,連結自然带不出去。本文说清 Disallow 與 noindex 的区別、入口頁该用哪種方式處理,以及排查發現異常时的检查顺序。

常见問题

入口頁被 robots.txt 屏蔽後,里面的目标 URL 還會被搜尋蜘蛛發現吗

先分清「屏蔽抓取」和「屏蔽收錄」

robots.txt 里的 Disallow 只表達一件事:不希望搜尋引擎抓取這個 URL。它不等于「請把這條 URL 從索引里删掉」,也不等于頁面里的連結會被自動跳過。被屏蔽的頁面因為不會被抓取,内容讀不到、連結讀不到,這才是對發現环节的真正影响。

被 Disallow 的入口頁,連結基本传不出去

搜尋蜘蛛發現 URL 的常见来源有三類:外部連結、sitemap、以及已经抓到的頁面里的連結。入口頁属于第三類。如果入口頁本身被屏蔽,蜘蛛按規則不會去抓,頁面里指向目标 URL 的連結就不會被讀出来,這條發現路径等于断了。

  • 入口頁被 Disallow:蜘蛛不抓入口頁,里面的連結不會被發現。
  • 入口頁正常、目标 URL 被 Disallow:蜘蛛能讀到連結,也可能尝试請求,但請求會被規則挡住。
  • 入口頁被屏蔽,但目标 URL 在 sitemap 或別處有外鏈:仍可能被發現,只是和這條入口頁無關。

那入口頁到底该不该加 Disallow

如果入口頁存在的意义就是让蜘蛛顺着連結往下走,就不该在 robots.txt 里屏蔽它。屏蔽之後,它只剩下一個「對外可见但讀不到内容」的 URL,對發現没有任何帮助。

如果你的目的是不想让入口頁本身出現在搜尋结果里,常见做法有两個:

  1. 在頁面里用 meta robots 寫 noindex,follow:允许抓取、允许跟随連結,只是不给入口頁建索引。前提是蜘蛛能抓到頁面,規則才會生效。
  2. 通過响應头下發 X-Robots-Tag 的同類指令,适合不方便改 HTML 的情况。
Disallow 和 noindex 经常被混用:一個拦在抓取之前,一個作用在抓取之後。想让入口頁带着連結走,就別用 Disallow;只是想让它自己不占搜尋结果位,才轮到 noindex。

怀疑發現环节断了,按這個顺序查

  1. 打開站点根目錄的 robots.txt,確認入口頁所在目錄有没有被整体 Disallow,注意路径前缀和大小寫。
  2. 看入口頁的响應狀態碼和响應头,確認有没有带 X-Robots-Tag: noindex 之類的指令。
  3. 在服務器日誌里检索搜尋蜘蛛對入口頁的請求记錄。如果從头到尾没有請求,優先怀疑屏蔽規則或連結入口本身不通。
  4. 確認目标 URL 除了這條入口頁,還有没有 sitemap、其他頁面或外部連結作為备用發現来源。

几個容易踩的细节

  • 被 Disallow 的 URL 仍有可能因為外部連結出現在结果里,只是通常没有摘要和快照,這不代表屏蔽没生效。
  • 如果想临时停掉入口頁,用 503 加 Retry-After 比 Disallow 更可控,恢复後蜘蛛通常會再来看。
  • robots.txt 的規則是按爬虫分別對待的,不同搜尋引擎對通配符和路径匹配的执行细节存在差异,別只在一家上驗證就下结论。
  • robots.txt 文件和入口頁本身如果互相矛盾(比如 robots 允许、頁面又 noindex),最终以實际抓取到的指令為准,測試时容易誤判。

把入口頁当成一條「可讀的通道」来维護:能抓、能讀到連結、狀態碼正常,後面的發現和收錄才有讨论的基础。