站点运营

站点运营:robots.txt 自查,別让一行規則挡住整站蜘蛛

robots.txt 是给爬虫看的說明文件,寫错一行就可能让整站或重要栏目從蜘蛛视野里消失。本文從文件位置、语法、常见誤封、sitemap 声明和日誌驗證几個角度,给出一份可执行的自查清單,帮你把規則改對,而不是改多。

站点运营

站点运营:robots.txt 自查,別让一行規則挡住整站蜘蛛

先確認 robots.txt 能被正常訪問

robots.txt 必须放在站点根目錄,比如 https://example.com/robots.txt。子目錄下的 robots.txt 不會被主流爬虫当作全站規則讀取。用浏览器或命令行訪問一次,確認返回 200,内容不是空白或 404 頁面。若站点有多個域名、www 與非 www、HTTP 與 HTTPS,需要確認爬虫實际訪問的是哪一個入口,規則是否挂在那個入口上。

robots.txt 是公開文件,任何人可以查看。不要在里面寫後台路径、測試地址或任何你不想公開的信息。

检查最容易誤封的几種寫法

下面這些情况在站点上线、迁移或複製环境时很常见:

  • Disallow: / 整站禁止。測試环境常這样寫,上线时如果忘记刪除,蜘蛛會停止抓取。自查时先看第一组 User-agent 是否為 * 並禁止了根目錄。
  • 大小寫和路径寫错。robots.txt 的路径匹配区分大小寫,/Images/ 和 /images/ 不是一回事。禁止目錄时不要把不想封的目錄一起圈進去。
  • 誤封 CSS、JS 和图片。如果禁止了 /assets/ 或 /static/,爬虫可能無法渲染頁面,影响對移動适配和内容的理解。除非有明确理由,一般建议允许這些静態资源。
  • User-agent 分组冲突。同一文件里出現多個针對同一爬虫的组,不同爬虫的解析方式可能不同。規則越简單、分组越少,越不容易出問题。
  • Allow 與 Disallow 顺序。多數爬虫按最長匹配優先,但不同實現存在差异。不要依赖复杂顺序,能合並的規則就合並。

把 sitemap 和抓取范围寫清楚

robots.txt 里声明 sitemap 地址是常见做法,寫法是 Sitemap: https://example.com/sitemap.xml。注意地址要寫完整,包含协议和域名。sitemap 本身不要被 Disallow 挡住,否則爬虫拿到地址也無法讀取。

如果站点有站内搜尋、篩選參數、打印頁或會话 ID 這類 URL,可以在 robots.txt 里做适度限制,但不要一次性封掉整個栏目。更稳妥的方式是结合 canonical、noindex 和參數處理,而不是只靠 robots.txt。

用日誌和工具驗證,而不是凭感觉

改完規則後,至少做三件事:

  1. 用搜尋引擎官方提供的 robots.txt 測試工具,輸入几個重要 URL,確認结果是“允许”或“被阻止”符合预期。
  2. 查看服務器日誌中 robots.txt 的請求狀態碼,確認爬虫拿到的是 200,而不是 301、403 或 404。
  3. 观察之後几天的蜘蛛訪問日誌,看重点栏目的抓取量是否恢复,是否出現大量 403 或 503。如果規則刚改完,缓存和生效時間可能有延迟。

別忘了 robots.txt 的邊界

robots.txt 只是爬虫自愿遵守的约定。它不能阻止頁面被索引:如果其他站点連結了你的 URL,搜尋引擎仍可能收錄。真正要阻止收錄,應该對頁面返回 noindex,或者用登入、密碼等方式做訪問控制。把 robots.txt 当成安全工具,容易留下誤解。

建议把 robots.txt 纳入上线發布检查清單:迁移域名、切換 CDN、複製測試环境、更換 CMS 之後,都重新訪問一次根目錄下的文件,確認没有多余的 Disallow。規則宁可少寫几條,也不要為了“優化抓取”加上一堆自己也说不清的指令。