两個文件,管的事不一样
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。清單里混着大量失效地址,會消耗蜘蛛在站点上的抓取预算。
两者配合的几種常见情形
- 新入口頁刚上线:先確認 robots.txt 未拦截,再把地址加入 sitemap 並提交。
- 入口頁批量扩張:sitemap 分片更新,同时观察服務器日誌里蜘蛛對新路径的請求情况。
- 入口頁改版換地址:舊地址做 301 指向新地址,sitemap 里換成新地址,舊地址逐步清理。
- 临时下线维護:不要用全站 Disallow,改為對维護頁面返回 503 並带上 Retry-After。
上线前的一份小检查
- robots.txt 能正常返回 200,内容與预期一致。
- sitemap 地址可訪問、格式正确,索引文件能展開到子文件。
- 抽查若干入口頁,確認返回 200,且不是软 404。
- 日誌中能看到對應蜘蛛的請求,路径與 sitemap 中一致。
- 没有把入口頁放在需要登入、驗證碼或特殊 Header 才能訪問的路径下。
這两個文件解决的是"能不能被發現、發現得顺不顺利",至于最终是否收錄、排名如何,還取决于站点整体质量與蜘蛛自身的判断。