常见問题

蜘蛛池入口頁的 robots.txt 该不该屏蔽:Disallow 會挡住搜尋蜘蛛吗

入口頁能不能被搜尋蜘蛛抓到,很大程度上取决于 robots.txt。本文說明 Disallow 與收錄的区別、几種常见的誤配置寫法、Crawl-delay 對抓取节奏的影响,以及如何用服務器日誌和測試工具驗證入口頁是否被挡住。

常见問题

蜘蛛池入口頁的 robots.txt 该不该屏蔽:Disallow 會挡住搜尋蜘蛛吗

入口頁連結排得再規整,如果 robots.txt 寫错一行,搜尋蜘蛛可能连门都進不来。robots.txt 是最容易被忽略、也最容易被一刀切寫坏的文件。它管的是能不能抓,而不是能不能收錄,把這两件事分開看,很多疑問就清楚了。

robots.txt 管抓取,不决定收錄

搜尋蜘蛛在訪問一個 URL 之前,通常會先讀取该域名根目錄下的 robots.txt,確認自己是否有權限抓取。被 Disallow 的路径,正常情况下蜘蛛不會去請求,也就谈不上從頁面里發現並跟進外鏈。反過来,允许抓取也不等于會被收錄,後者還要看内容质量、重复程度、站点整体情况等因素。入口頁的價值在于给搜尋蜘蛛提供一條“發現 URL 的路”,而 robots.txt 决定這條路通不通。

几種常见的誤配置

  • Disallow: /:整站禁止抓取。不少人調试时临时加上,上线後忘了删,结果入口頁和目标連結都進不了抓取队列。
  • 規則寫得太宽:例如 Disallow: /*.html 或 Disallow: /go/,本意是屏蔽某些目錄,却把入口頁所在路径一起盖住。前缀匹配是很常见的坑。
  • 大小寫和斜杠不一致:/Entry 與 /entry 在多數實現里是区分大小寫的,寫错要么等于没屏蔽,要么屏蔽了不该屏蔽的路径。
  • 只给特定 UA 寫規則:為某個搜尋引擎單獨寫了一段 User-agent,却漏了通用段里的 Allow,其他蜘蛛進来就全被挡住。

想让入口頁被抓,该怎么寫

  1. 先確認入口頁所在路径是允许抓取的,最省事的做法是不對它寫任何 Disallow 規則。
  2. 如果必须屏蔽站内某些功能目錄,規則寫具体,例如 Disallow: /search/、Disallow: /cart/,避免用大范围通配。
  3. 為需要抓取的路径补 Allow 規則。多數搜尋引擎是按最長匹配判断,而不是谁寫在前面谁優先。
  4. 在文件末尾寫一行 Sitemap,指向你的 sitemap 地址,给蜘蛛多一條發現路径。
  5. 儲存後直接用浏览器訪問域名下的 /robots.txt,確認返回 200 且内容是最新版,而不是舊缓存。

Crawl-delay 和 Sitemap 声明

Crawl-delay 只被部分搜尋引擎支持,而且限制的是整站抓取間隔。入口頁如果連結較多,又设了較大的 Crawl-delay,蜘蛛在單位時間内能跟進的 URL 數量會明顯减少。没有特殊原因,不建议在入口頁所在域名上設定這個參數。Sitemap 声明属于加分項,它不會覆盖 Disallow,被屏蔽的 URL 寫進 sitemap 也不會因此被正常抓取。

robots.txt 不是收錄開關。允许抓取只是让搜尋蜘蛛有机會訪問,能不能進索引、以什么形式展現,仍然由搜尋引擎判断。

怎么驗證有没有被挡住

最直接的方法是看服務器日誌,篩選各搜尋引擎蜘蛛的 UA,观察它有没有請求過入口頁 URL。如果日誌里只有首頁和 robots.txt,入口頁一次都没出現,就要回头检查規則。其次可以用站長平台提供的 robots 測試工具,輸入入口頁 URL,看返回的是“允许”還是“被阻止”。改完規則不要指望立刻生效,蜘蛛重新讀取 robots.txt 需要時間,通常要等下一轮回訪。

小结

入口頁的 robots.txt 原則其實很简單:该抓的路径不要挡,要挡的路径寫清楚。規則越少越不容易出错,改完用日誌和測試工具核對一次,比反复猜测靠谱。