站点运营

站点地图自查:別让 sitemap 變成一份過期 URL 清單

站点地图常被当成一次性配置,建站时生成之後就再没人過問。本文從 URL 有效性、lastmod 可信度、分片索引文件三個角度,整理一份可落地的 sitemap 自查清單,並說明它與 robots.txt、站内連結、搜尋资源平台提交之間的關系,帮站点把這份清單维持在可信、可维護的狀態。

站点运营

站点地图自查:別让 sitemap 變成一份過期 URL 清單

sitemap 是给蜘蛛看的目錄,不是许愿池

站点地图(sitemap.xml)的作用其實很朴素:把站内希望被發現的 URL 集中列成一份清單,交给搜尋引擎自己去挑。它不保證收錄,也不该被当成“提交了就會来抓”的许愿池。真正麻烦的是,很多站点的 sitemap 属于建站时生成一次、之後無人過問的文件,時間一長,它和站点實际狀態之間的偏差越滚越大。

三類最常见的偏差

一、清單里混進了不该出現的地址

下面這些地址通常不该出現在 sitemap 里:

  • 已经返回 404 或 410 的地址;
  • 會 301、302 跳走的舊地址(應该直接寫跳轉後的最终地址);
  • 頁面本身已設定 noindex 的地址;
  • 带篩選、排序、會话、追踪參數的组合地址;
  • 後台、登入、測試环境等不希望被公開訪問的路径。

每多一條無效地址,就多占一点抓取资源,也让這份清單的可信度打一次折扣。蜘蛛反复拿到出错的内容,對它的兴趣只會越来越低。

二、lastmod 被当成“顺手改一下”

lastmod 是给蜘蛛判断“這個頁面值不值得再跑一趟”的參考。有些站点為了顯得勤快,每次生成 sitemap 都把全站頁面的 lastmod 刷成当天。後果是:蜘蛛看到每一次都是“新内容”,要么反复白跑,要么干脆不再信任這個字段,退回按自己的节奏来。

更稳妥的做法是让它對應真實的内容變更時間——正文、结构化資料、價格、库存這類實质性改動才更新;僅僅改動頁脚年份、广告位或者無關样式,不必刷新。

三、分片與索引文件長期無人核對

大站通常會拆成 sitemap index 加多個子文件,每個子文件有數量和体积上的常见约束(例如單文件不超過 50000 條、未压缩不超過 50MB)。如果由程序自動拆分,要確認每個子文件都能正常打開、返回正确的内容類型,而不是某個子文件早已 404,索引却還在引用它。索引文件里列出的應当是 sitemap 地址,不要誤寫成普通頁面地址。

一份可以照着做的自查清單

  1. 直接打開 sitemap 地址,確認返回 200、内容類型為 XML,且没有被登入墙或 CDN 規則拦住。
  2. 在 robots.txt 里用一行 Sitemap 声明完整地址,方便蜘蛛找到入口。
  3. 抽查清單首尾與中間若干條 URL,逐個訪問,看狀態碼、是否跳轉、是否带 noindex。
  4. 核對 lastmod,確認它跟着真實内容變化,而不是跟着生成脚本走。
  5. 检查是否有孤立頁面不在清單里,尤其是新發布不久、站内連結還没铺開的内容。
  6. 確認清單中的地址與頁面規范地址完全一致,带不带 www、带不带结尾斜杠保持统一。
  7. 如果用了 sitemap index,逐個子文件点開,確認没有死鏈與重复。
  8. 把重新生成排進日常流程,内容有增删後就更新,而不是等想起来再说。

sitemap 只是入口之一,別孤立地看它

站点地图解决的是“告诉你有哪些地址”,但真正影响蜘蛛愿不愿意多来的,還是站点本身:内鏈能不能從首頁顺着点到,頁面打開速度如何,内容是不是持續在更新。如果清單里躺着几千條 URL,而站内几乎没有任何連結指向它們,這份文件的實际作用會大打折扣。

把 sitemap 当作一份需要维護的清單,而不是一項提交完就算收工的任務。

另外,服務器日誌和搜尋资源平台里的抓取資料能反過来說明問题:蜘蛛有没有按清單来、哪些目錄被跳過了、哪些地址反复报错。把這些观察结果回流到清單维護上,比單纯盯着“一共提交了多少條”更有意义。

小结

sitemap 自查不需要多复杂的工具,重点就三件事:清單里的地址真實可用、lastmod 反映真實改動、分片與索引文件没有失效。定期花十几分钟過一遍,比事後排查“為什么新頁面迟迟不来”要省事得多。