調整 robots.txt 往往是站点运营里成本最低的一次「開關」,但很多改動之後,日誌里看不出任何反應:新增的 Disallow 没有让抓取量下降,删掉的規則也没有让被挡住的目錄重新被訪問。原因不在于規則没生效,而在于 robots.txt 作用于抓取鏈路的入口,它的结果要经過讀取、缓存、排队和調度几层延迟才會顯現。
robots.txt 在抓取鏈路里的位置
蜘蛛在請求一個 URL 之前,需要先取得该主机的 robots.txt 並解析規則。這意味着它是一道前置判断:允许,URL 才可能進入抓取队列;不允许,請求根本不會發出。所以它影响的不是「抓取结果」,而是「抓取机會」。理解這一点,就能理解為什么改動後的表現總是滞後的。
收紧規則:加了 Disallow 之後會發生什么
已抓取的頁面不會自動消失
Disallow 只阻止抓取,不负责移除。已经被抓取並建立索引的 URL,在規則生效後仍可能出現在搜尋结果里,只是蜘蛛無法再讀取内容。如果目标是让頁面登出索引,robots.txt 並不是合适的工具,用 noindex 或者頁面本身的其他處理更直接——但要注意,被 Disallow 的頁面蜘蛛讀不到 noindex 标簽。
抓取量的下降是渐進的
日誌里常见的表現是:改動当天几乎没變化,之後几天被屏蔽目錄的請求逐步减少,同时蜘蛛把請求轉移到仍然允许的路径上。如果站点整体抓取预算有限,這部分請求不一定會消失,可能只是換了落点。
放開規則:解除屏蔽後,蜘蛛什么时候回来
解除限制不會立刻带来抓取。被長期屏蔽的 URL 往往已经不在活跃队列里,需要重新被發現。可以按下面的顺序做:
- 確認 robots.txt 能被正常訪問,返回 200,Content-Type 正确。
- 把需要恢复的 URL 放進 Sitemap,並保證從站内連結可以直接到達。
- 观察日誌中该目錄的請求是否出現,先看有没有被重新請求,再看抓取频率。
- 给出足够的時間窗口,通常以周為單位评估,不要只看一两天。
容易被忽略的几個细节
- 文件不可用时的差別:robots.txt 返回 404 通常按「允许全部」處理,而持續返回 5xx 可能让蜘蛛收紧甚至暫停抓取。迁移、發布或權限配置出错时,這種情况比規則本身更危險。
- 缓存:蜘蛛可能對 robots.txt 保留一段時間的缓存,改動不會每次都被立即讀到,尤其在高频抓取的大站上。
- crawl-delay 的支持並不统一:寫進去不等于會被遵守,用它来控制並發並不可靠,服務器端的限速更可控。
- 文件体积限制:robots.txt 有大小上限,規則過多时後面部分可能被忽略,長清單更适合交给 Sitemap。
- Sitemap 指令:可以在 robots.txt 里声明 Sitemap 地址,但它只是一種告知,不等于提交。
變更时的操作建议
把 robots.txt 的修改当成一次發布来對待,而不是随手編輯:
- 改之前儲存一份目前版本,记錄改動時間和内容。
- 用工具驗證規則是否命中预期路径,特別是带參數和中文的 URL。
- 改之後在日誌里按目錄、狀態碼分组,對比前後几天的請求量。
- 如果只是想让某些頁面少被抓,可以先調整内鏈和 Sitemap,而不是直接屏蔽。
robots.txt 决定的是「能不能来」,不是「来不来」和「留不留」。改動之後的空档期,往往比改動本身更需要被监控。
把規則變更與日誌观察绑定在一起,才能看清一次改動影响的到底是抓取机會、抓取路径,還是僅僅是蜘蛛的請求分布。