為什么 robots.txt 值得單獨盯一眼
robots.txt 是放在站点根目錄的一個纯文本文件,作用范围是整站。它不走内容發布流程,改一行、儲存、上传,蜘蛛下次来訪問时就會按新規則执行。正因為生效快、门槛低,它常常成為临时測試留下的現场:有人為了屏蔽測試目錄,把 Disallow: / 寫進了正式环境;有人複製模板时忘了改地址,規則里引用的是另一個站点。
更麻烦的是,robots.txt 没有预览功能,寫错了也不會有人提醒你。所以比較實际的做法,是把它当成一項配置来管理:改動有记錄,上线前有驗證,上线後有观察。
几種常见的誤封寫法
- 用 Disallow: / 屏蔽全站,本意是临时下线或阻止測試抓取,之後忘记刪除。
- 誤伤目錄前缀。例如寫 Disallow: /news,本想拦 /news-test,结果把 /newsletter、/news/2024 一並挡掉。
- 規則文件放错位置,比如放在 www 站点下,而實际訪問的域名不带 www。
- 用 Disallow 去處理本该刪除或改版的頁面,頁面抓不到,舊记錄却可能長期留在索引里。
- 路径大小寫、编碼與真實 URL 對不上,看似寫了規則,實际要么没生效,要么超出预期地生效。
Disallow 和 noindex 不是一回事
這两個工具经常被混用,结果往往是两头落空。Disallow 表達的是“別来抓”,蜘蛛看不到頁面内容,自然也讀不到頁面里的 noindex。如果這個 URL 被別處連結過,搜尋引擎仍可能只凭外鏈信息生成一條记錄。
想让頁面從索引里登出,主路径是让它可以被抓取,並返回 404 或 410,或者允许抓取後用 noindex 明确表態。robots.txt 更适合用来阻止抓取行為本身,而不是当作内容下线開關。
所以当既不想被频繁抓取、又不想頁面長期留着时,需要先判断優先級:先让它被正常訪問並讀到狀態,再逐步調整訪問频率。
上线前的自查清單
- 確認文件可訪問:浏览器打開“站点域名/robots.txt”,狀態碼應為 200,返回纯文本,而不是站点的错誤頁。
- 確認协议與主域:規則里声明的站点地图地址,要與實际使用的 http/https、主域寫法一致。
- 逐條讀 Disallow 路径:每一條都要能说清挡了什么、為什么挡,说不清的先不加。
- 检查通配符與结尾符:* 匹配任意字符,$ 匹配结尾,滥用會让范围過大或過小。
- 检查是否声明了 Sitemap,方便蜘蛛顺路發現入口。
- 測試环境與生产环境的規則文件分開维護,不要共用同一份。
- 改動留记錄:谁改的、改了什么、為什么改、什么时候開始生效。
上线後的观察方式
改完並不算結束。可以從服務器日誌里筛出對 /robots.txt 的請求,看狀態碼是否稳定在 200。出現 404,說明文件缺失;出現 5xx,說明服務器處理這個文件时出了問题。這两種情况都可能让蜘蛛在一段時間内按更保守的方式對待整站。
同时留意被抓取 URL 的分布。原本每天都有稳定抓取的栏目,如果某天開始降到接近于零,不一定是内容出了問题,先回头確認規則文件里有没有把這條路径挡上。反過来,如果日誌里频繁出現本该被挡掉的地址,也要检查規則里的路径寫法是否與實际 URL 對得上,尤其是带參數或大小寫不一致的地址。
把它纳入常規巡检
建议把 robots.txt 與其他基础項放在一起,按月或按版本节点過一遍:文件能否訪問、規則有没有新增、站点地图是否有效、日誌中的狀態碼是否正常。規則越少越容易讀懂,能用頁面狀態碼和 meta 标簽解决的事,就尽量不寫進規則文件里。