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
- 多套环境共用一份文件,測試規則誤發到生产环境
改完之後怎么驗證
- 用搜尋引擎官方提供的 robots.txt 測試工具,輸入具体 URL 看判定结果是否符合预期
- 在服務器日誌里篩選蜘蛛請求记錄,確認被禁止的目錄确實不再被抓,需要抓的目錄仍正常出現
- 观察搜尋平台後台的抓取統計,看抓取量是否出現異常下滑
- 把改動记進运营日誌,注明時間、修改人、原因,便于日後回滚排查
規則越少越安全。没想清楚為什么要加一條 Disallow 之前,先不要加。
维護节奏建议
robots.txt 不需要频繁調整。建议按季度,或者在大改版、上线新栏目、下线舊频道时复查一次,重点確認三件事:是否還有過期規則、是否誤伤静態资源、Sitemap 地址是否仍指向有效文件。改動尽量選擇流量較低的时段,改完留出几天观察日誌,再决定下一步怎么調。