站点运营

站点运营:robots.txt 维護自查,別让一條規則挡住整站抓取

robots.txt 只有几行文本,却可能决定蜘蛛能不能走進你的站点。本文梳理常见的誤封寫法、通配符與路径匹配的坑、Sitemap 声明位置,以及一份可执行的自查清單,帮你在改規則之前先確認影响范围。

站点运营

站点运营:robots.txt 维護自查,別让一條規則挡住整站抓取

robots.txt 是放在站点根目錄的一個纯文本文件,内容通常只有几行。正因為它看着简單,很多站点在改版、迁移或者临时屏蔽某個目錄时顺手加一條 Disallow,過几個月就忘了,结果蜘蛛長期進不来,頁面還在,流量却慢慢掉。

一個文件,影响的是整站抓取路径

搜尋引擎蜘蛛在抓取之前,通常會先讀取根目錄的 robots.txt,判断哪些路径可以訪問。被明确禁止的地址,一般不會被主動抓取;反過来,如果文件本身返回 404 或者内容乱碼,蜘蛛多數會按「没有限制」處理,繼續正常抓取。問题往往出在中間狀態:文件能讀,但規則寫得太宽。

常见的誤封寫法

  • Disallow: / —— 整站屏蔽。做測試环境时常见,同步到线上就是灾难。
  • 屏蔽 CSS、JS 目錄 —— 蜘蛛渲染頁面时需要這些资源,屏蔽後可能把頁面判成空白或不完整。
  • 屏蔽分頁、篩選、站内搜尋 —— 出發点是减少重复,但一刀切會连带挡掉真實的列表入口。
  • 屏蔽整個图片或附件目錄 —— 图片搜尋和頁面内资源引用都會受影响。
  • 測試規則没删 —— 临时加的路径一直留在线上,没人记得。

寫法上的几個细节

路径前缀與通配符

Disallow 後面的值按路径前缀匹配,不是完整 URL。寫 Disallow: /admin 會同时挡住 /admin、/admin/、/administrator 這類以该字符串開头的地址。想精确一点,可以用 $ 表示结尾,用 * 表示任意字符。規則寫得越短,覆盖范围越容易超出预期。

大小寫與结尾斜杠

路径通常区分大小寫,/Images 和 /images 可能被视為两條不同路径。结尾斜杠也別随手省略,目錄和文件混在一起时容易誤伤。

Sitemap 声明

可以在 robots.txt 里用 Sitemap 行指向站点地图地址,方便蜘蛛發現入口。這只是一種补充,不是必须,但寫错了會指向已经不存在的文件,反而浪費一次請求。

Crawl-delay

部分蜘蛛支持這一項,用来降低訪問频率。但主流搜尋引擎對此支持有限,控制抓取速度更稳妥的办法還是看服務器日誌和實际负载,而不是只寫一行數字。

robots.txt 管不了的事

禁止抓取不等于禁止收錄。一個被 Disallow 的頁面仍然可能因為外部連結被索引,只是标题和摘要在搜尋结果里可能顯示不全。要真正让頁面登出索引,應该用 noindex,並且要让蜘蛛能抓到那個頁面、看到這個标记。

同样,robots.txt 也不是安全措施。它是一份公開說明,任何人都能讀。把後台地址、接口路径寫進去,等于把目錄结构告诉別人。敏感入口應该靠登入校驗和權限控制,而不是靠這一行文本。

一份可执行的自查清單

  1. 直接在浏览器打開 站点域名/robots.txt,確認狀態碼是 200,内容没有乱碼。
  2. 通讀每一行規則,問一句「這條還在生效吗」,删掉没有明确目的的條目。
  3. 列出被屏蔽的目錄,逐個確認里面有没有對用戶有價值的頁面。
  4. 检查是否誤封了静態资源目錄和分頁路径。
  5. 確認 Sitemap 行指向的地址可以正常訪問。
  6. 用搜尋引擎站長平台里的 robots 測試工具,輸入几個關键 URL,看判定结果是否符合预期。
  7. 對比服務器日誌里蜘蛛的訪問路径,和規則预期是否一致。

修改前後的注意事項

改動 robots.txt 之前,先备份一份目前版本,並记錄改動時間和原因。放宽限制後,抓取恢复需要時間,不會立刻见效;收紧限制則可能让已经收錄的頁面逐渐失去抓取入口。如果只是想让某類頁面不被索引,優先考虑頁面級的 noindex,而不是直接在 robots.txt 里一刀切。

最後一点:robots.txt 属于站点基础配置,改動频率應该很低。把它纳入改版和上线清單,和 URL 跳轉、sitemap、證书一起检查,比事後排查要省事得多。