站点运营

站点运营:XML 站点地图自查,別让蜘蛛按着過期清單抓取

XML 站点地图是站点主動交给蜘蛛的地址清單,長期不更新會让抓取跑偏。本文從可訪問性、狀態碼過滤、規范版本、lastmod 真實性、分片與格式几個角度,给出一套可按月执行的站点地图自查流程,帮助站点把抓取集中在真正有效的頁面上。

站点运营

站点运营:XML 站点地图自查,別让蜘蛛按着過期清單抓取

XML 站点地图(sitemap.xml)是站点主動交给蜘蛛的一份地址清單。它不保證收錄,也不能替代内鏈和被引用的作用,但它决定了蜘蛛在自行探索之外,還能不能顺着你希望的路径走一遍。清單長期不更新,最直接的结果就是蜘蛛反复訪問已经失效的地址,而新頁面迟迟没人管。

一、先確認蜘蛛真的拿得到這份清單

很多站点地图問题不是内容寫错,而是蜘蛛根本訪問不到。先做三件事:

  • 用浏览器無痕模式直接打開你的域名下的 sitemap.xml,確認返回 200,而不是被登入校驗、地域限制或 CDN 規則拦下。
  • 检查 robots.txt 里是否有 Sitemap: 這一行,並且寫的是完整绝對地址。有多個站点地图时逐行列清楚。
  • 確認服務器没有對蜘蛛的 UA 返回不同结果。部分防護規則會拦批量抓取,顺带把站点地图也拦了。

二、清單里只應该出現可索引的地址

狀態碼要過一遍

把站点地图里的 URL 批量取一次狀態碼,凡是有 3xx、4xx、5xx 的,先弄清楚原因再决定留不留。已经 301 的舊地址應该換成目标地址;已经下线的頁面直接删掉,而不是留在清單里碰运气。

排除不该被抓的頁面

  • 登入頁、後台、搜尋结果頁、站内搜尋參數頁。
  • 草稿、预览、带临时 token 的地址。
  • 被 robots.txt 明确 Disallow 的目錄。Disallow 和 sitemap 同时指向同一批地址,等于發了两條矛盾的指令。
  • 設定 noindex 的頁面。既然不想被收錄,就別让它出現在清單里占用抓取。

只放規范版本

同一篇内容如果有 www 與非 www、带斜杠與不带斜杠、带參數與不带參數等多個版本,站点地图里只保留 canonical 指向的那一個。版本混放會让蜘蛛在两個地址之間反复確認,效率很低。

三、lastmod 要寫實情

lastmod 是站点地图里最容易被滥用的字段。有人每次生成时统一刷成当天時間,短期看似活跃,長期會让蜘蛛学會忽略這個信号,因為它發現時間和内容實际變化對不上。

比較稳妥的做法是:把 lastmod 绑定到内容真正更新的時間戳,而不是生成任務执行的時間;模板、導航、頁脚的微調不必触發全站 lastmod 變化;如果确實無法提供准确時間,宁可不寫這個字段,也不要寫假的。

四、分片、數量與格式

  • 單個站点地图文件建议不超過 5 萬個 URL,未压缩体积不超過 50MB,超出就拆成多個文件,再用站点地图索引(sitemap index)串起来。
  • 索引文件里列出的子文件同样要能返回 200,別出現指向已刪除分片的情况。
  • URL 中的特殊字符要按規范轉义,中文路径建议直接使用编碼後的形式。
  • 定期確認站点地图的响應头與缓存策略,別让蜘蛛長期拿到一份缓存住的舊版本。

五、可以按月执行的检查流程

  1. 抓取站点地图文件本身,確認狀態碼、体积和分片數量。
  2. 提取全部 URL,批量請求响應头,记錄非 200 的條目。
  3. 對照 robots.txt 和 noindex 清單,剔除冲突項。
  4. 抽查若干頁面的 lastmod,與頁面實际更新時間比對。
  5. 把内鏈、外鏈中發現的、站点地图里缺失的有效頁面补進去。
  6. 把结果记錄下来,下次對比變化,而不是每次都從头猜。
站点地图的價值不在于提交得多,而在于清單和站点現状對得上。一份准确實时的清單,比十份凑數的清單更有用。

小结

把站点地图当成一份需要维護的运营资产:地址有效、版本唯一、時間真實、分片清晰。它不會让頁面自動排到前面,但能减少蜘蛛在無效地址上的消耗,让新内容更快被看见。