站点运营

站点运营:XML 站点地图的拆分與维護,別把整站塞進一個文件

站点地图(sitemap.xml)是帮蜘蛛發現 URL 的辅助工具,不是收錄保證书。本文梳理單文件容量上限、索引文件的拆分方式、lastmod 的寫與不寫、哪些地址不该放進去,以及提交後该盯哪些資料,让站点地图真正起到 URL 發現的作用。

站点运营

站点运营:XML 站点地图的拆分與维護,別把整站塞進一個文件

站点地图(sitemap.xml)是一份给搜尋引擎看的 URL 清單,作用是帮助蜘蛛發現地址、感知更新。它不承诺收錄,也不影响排名,但一份维護得当的站点地图,确實能减少新頁面長期“没人来抓”的情况。

它解决的是發現問题,不是收錄問题

蜘蛛的發現路径主要有三條:外鏈、站内連結、站点地图。前两條靠頁面之間的连接關系,第三條是主動申报。對结构較深、内鏈較弱的頁面来说,站点地图往往是它們被發現的唯一机會。反過来说,一個已经能從首頁两三跳到達的頁面,進不進站点地图差別不大。

所以判断标准很简單:這份清單里的地址,是不是都值得被抓取和索引。答案是否,就不该堆進去。

單文件的容量上限與拆分

常见的硬性限制有两條:

  • 單個 sitemap 文件不超過 5 萬條 URL;
  • 未压缩体积不超過 50MB(gzip 压缩後同样有 50MB 限制)。

超過之後必须拆成多個文件,再用一個索引文件把它們串起来。與其等到超限才拆,不如按栏目、按内容類型提前拆,比如文章、商品、专题、标簽頁各一個文件。這样某類内容出問题时,影响范围更小,也方便單獨排查。

索引文件(sitemap index)怎么寫

索引文件本身不列具体 URL,只列子地图的位置和各自的 lastmod。它同样受 5 萬條上限约束,實际上一萬個子地图就遠超正常站点的規模了。寫法上,子地图地址建议用绝對地址,並且和實际可訪問的路径保持一致——如果子地图本身返回 404 或跳轉,索引里的其余條目也會受影响。

lastmod 寫還是不寫

很多人习惯让 lastmod 跟着頁面渲染時間自動變化,每次抓取都顯示“刚刚更新”。這種做法短期看不出問题,長期會稀释這個字段的可信度。lastmod 應当對應内容的實质性改動,比如正文补充、資料更新、價格調整,而不是頁脚版權年份變化或模板微調。

  • 内容确實改了,就更新;
  • 只改了样式或無關模块,不要動;
  • 批量重建導致全站時間统一刷新,等于没寫。
如果 lastmod 長期不可信,蜘蛛會逐渐忽略這個字段,你反而失去了提示更新的手段。

哪些地址不该出現在站点地图里

  • 被 noindex 标记的頁面:清單和指令自相矛盾,浪費抓取;
  • 會跳轉的地址:應该放跳轉後的最终地址;
  • 已刪除的頁面:返回 404/410 的地址繼續留在清單里没有意义;
  • 排序、篩選、跟踪參數生成的重复地址;
  • 需要登入的後台、測試环境、内網地址;
  • 分頁過深的列表頁,视情况只保留前几頁。

提交之後该看什么

在站長平台提交站点地图後,別只看“已提交”就完事。更值得關注的是“已發現”和“已编入”之間的差額:大量地址被發現却長期没被訪問,通常說明抓取配額被別處占用了,或者站点整体响應偏慢。反過来,如果清單里的地址压根没被讀到,先检查文件本身能否正常訪問、格式是否被解析。

一份简單的自查清單

  1. 清單位置是否寫在 robots.txt 里,且 robots.txt 没有挡住它;
  2. 文件本身可訪問,返回 200,Content-Type 正确;
  3. URL 數量、体积都在上限内,超過已拆分;
  4. 清單里没有 noindex、跳轉、失效地址;
  5. lastmod 與實际内容改動對應;
  6. 新内容上线後,观察它被發現的間隔是否在可接受范围内。

把站点地图当成一份需要定期维護的清單,而不是一次性生成的产物,它才能真正在 URL 發現這一环上發挥作用。