站点运营

站点运营:robots.txt 自查,別让几行規則挡住正常抓取

robots.txt 管的是抓取而不是收錄,却常常成為抓取異常的原因。本文梳理規則寫法上的常见检查点、容易踩的坑,以及改完之後的驗證方式與维護节奏,帮助站点运营在調整屏蔽規則时少誤伤正常頁面和静態资源。

站点运营

站点运营:robots.txt 自查,別让几行規則挡住正常抓取

robots.txt 是放在站点根目錄的一個纯文本文件,它不控制索引,只表達希望蜘蛛不要抓取哪些地址。正因為規則短、生效快、影响面大,它常常是站点运营里最容易誤伤自己的一處配置。不少抓取異常,最後都能追到几行随手添加的 Disallow 上。

先想清楚:它管的是抓取,不是收錄

很多同学把 robots.txt 当成下架開關,頁面一出問题就 Disallow,以為這样就不會出現在搜尋结果里。實际逻辑是:被禁止抓取的地址,搜尋引擎拿不到内容,但已经收錄的舊連結可能仍然保留,只是摘要和快照會逐渐過期。想處理頁面級問题,應当用 noindex(頁面可抓取时才生效)或直接刪除並返回 404、410。

  • 不希望被抓取:寫進 robots.txt
  • 不希望收錄但允许抓取:用 meta robots 的 noindex
  • 内容已刪除:返回 404 或 410,再同步更新站点地图

規則寫法上的几個检查点

路径要寫對前缀

Disallow 後面跟的是路径前缀,不是完整 URL。寫 Disallow: /admin/ 才會匹配 /admin/ 下的所有地址;寫完整域名不會生效,寫成 Disallow: admin 也匹配不到以斜杠開头的路径。

通配符和结尾符別用混

  • * 匹配任意字符,适合處理带參數的地址,例如 /*?sort=
  • $ 匹配结尾,例如 /*.pdf$ 只针對以 .pdf 结尾的地址
  • 两者都属于非标准扩展,主流蜘蛛支持,但寫法越简單越不容易出問题

User-agent 分组不要互相干扰

每個分组由一條或多條 User-agent 加若干規則组成,分组之間靠空行分隔。常见错誤是给某個蜘蛛單獨寫規則时忘了空行,结果規則被归到上一组,或者與後面的 User-agent: * 产生理解上的偏差。建议把通用規則放在最後,特殊蜘蛛單獨成组,並在组内加注释說明用途和添加時間。

別忘了声明站点地图

Sitemap 一行寫在文件末尾,可以帮助蜘蛛更快發現新地址,但它只是线索,不代表會被收錄。

最容易踩的几個坑

  • 全站 Disallow: / 之後忘记撤销,測試环境的規則被带到正式站
  • 屏蔽了 CSS、JS、图片目錄,蜘蛛拿不到渲染所需资源,頁面评估失真
  • 為屏蔽带參數的篩選地址,把正常列表頁一起挡在门外
  • 為了临时下线一篇稿子,顺手把整個栏目路径寫進 Disallow
  • 多套环境共用一份文件,測試規則誤發到生产环境

改完之後怎么驗證

  1. 用搜尋引擎官方提供的 robots.txt 測試工具,輸入具体 URL 看判定结果是否符合预期
  2. 在服務器日誌里篩選蜘蛛請求记錄,確認被禁止的目錄确實不再被抓,需要抓的目錄仍正常出現
  3. 观察搜尋平台後台的抓取統計,看抓取量是否出現異常下滑
  4. 把改動记進运营日誌,注明時間、修改人、原因,便于日後回滚排查
規則越少越安全。没想清楚為什么要加一條 Disallow 之前,先不要加。

维護节奏建议

robots.txt 不需要频繁調整。建议按季度,或者在大改版、上线新栏目、下线舊频道时复查一次,重点確認三件事:是否還有過期規則、是否誤伤静態资源、Sitemap 地址是否仍指向有效文件。改動尽量選擇流量較低的时段,改完留出几天观察日誌,再决定下一步怎么調。