蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 sitemap:让路径被發現,也少浪費抓取

入口頁上线後長期没有動静,問题常出在 robots.txt 與 sitemap 這两個文件上。本文說明两者分工:一個做减法管拦截,一個做加法给清單,並梳理常见寫法错誤、分片與 lastmod 的使用方式、上线前後的检查要点,帮助入口頁的路径更容易被蜘蛛走到。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 sitemap:让路径被發現,也少浪費抓取

两個文件,管的事不一样

robots.txt 是一份放在根目錄的约定文件,用来告诉蜘蛛哪些路径不必抓、抓取間隔可以放多宽;sitemap 則是一份地址清單,把入口頁的 URL 集中列出来,方便蜘蛛按图索骥。前者做减法,後者做加法。很多入口頁上线後長時間没有動静,問题常常出在這两個文件:要么 robots.txt 把整站拦住了,要么 sitemap 里全是過期地址,蜘蛛跑一趟發現都是死鏈,下次自然来得少了。

robots.txt:先把门打開

最容易出错的几處

  • 全站 Disallow:測試环境的規則被同步到线上,蜘蛛连首頁都進不去。
  • User-agent 寫错:寫成具体蜘蛛名却拼错,或只寫 Disallow 不寫 User-agent,規則可能不按预期生效。
  • 屏蔽了 CSS 與 JS:部分蜘蛛渲染頁面时需要這些资源,屏蔽後可能判断頁面结构異常。
  • Crawl-delay 设得過大:部分蜘蛛支持這個字段,間隔太長會明顯拖慢發現速度。
  • 把 sitemap 的地址寫在了不该出現的位置,或與拦截規則混在一起,注释和顺序要分清。

检查方法很朴素:用浏览器直接訪問 /robots.txt,看返回的是不是线上那一份;再用不同 UA 抓一次首頁,確認没有被 403 或 503 拦住。

sitemap:给蜘蛛一份可用的清單

數量與分片

單個文件的地址數控制在协议建议的上限内,超出就分片,並在 sitemap 索引里互相引用。入口頁數量增長較快时,按上线批次或目錄切分,比全部塞進一個文件更容易定位問题。

lastmod 要如實

把 lastmod 统一刷成当天,短期看起来"更新很勤",但蜘蛛回訪後發現内容没變,這個字段的可信度會下降。只改時間戳而不改内容,對重訪没有實际帮助。

只放可訪問的地址

已下线的入口頁要從清單里移除,或让它返回明确的 404、410。清單里混着大量失效地址,會消耗蜘蛛在站点上的抓取预算。

两者配合的几種常见情形

  1. 新入口頁刚上线:先確認 robots.txt 未拦截,再把地址加入 sitemap 並提交。
  2. 入口頁批量扩張:sitemap 分片更新,同时观察服務器日誌里蜘蛛對新路径的請求情况。
  3. 入口頁改版換地址:舊地址做 301 指向新地址,sitemap 里換成新地址,舊地址逐步清理。
  4. 临时下线维護:不要用全站 Disallow,改為對维護頁面返回 503 並带上 Retry-After。

上线前的一份小检查

  • robots.txt 能正常返回 200,内容與预期一致。
  • sitemap 地址可訪問、格式正确,索引文件能展開到子文件。
  • 抽查若干入口頁,確認返回 200,且不是软 404。
  • 日誌中能看到對應蜘蛛的請求,路径與 sitemap 中一致。
  • 没有把入口頁放在需要登入、驗證碼或特殊 Header 才能訪問的路径下。
這两個文件解决的是"能不能被發現、發現得顺不顺利",至于最终是否收錄、排名如何,還取决于站点整体质量與蜘蛛自身的判断。