Sitemap 的作用是给搜尋蜘蛛一份明确的 URL 清單。当站点 URL 數量涨到几千、上萬,單個文件會變得又大又难维護,這时通常要引入 Sitemap 索引文件(Sitemap Index),把众多子 Sitemap 组织成一個總入口。
什么时候该用索引文件
並不是所有站点都需要分片。判断标准大致有三條:
- URL 總量接近或超過單個文件的容量上限;
- 站点包含多個栏目、子域名或多語言版本,希望分批提交;
- 不同板块的更新频率差异很大,混在一個文件里不好定位問题。
如果站点只有几百個頁面,内鏈结构也清楚,一個普通 Sitemap 就够了,額外加一层索引反而增加维護成本。
分片维度怎么選
按栏目或目錄拆
最常见也最省心的方式。文章、商品、帮助文档各自一個子 Sitemap,路径保持稳定,例如 /sitemap-articles.xml。某個板块出問题,只影响對應分片,排查范围小。
按語言或地区拆
多語言站点按語言分片,能看清每個語言版本的 URL 數量是否合理,也方便核對 hreflang 指向的頁面是否都在這份清單里。
按内容類型或更新频率拆
更新频繁的列表頁、新發布内容放一個分片,歷史归档放另一個分片。這样在抓取日誌里更容易判断:搜尋蜘蛛是先去翻新内容,還是一直在舊归档里打轉。
單片文件的邊界與寫法
- 單個 Sitemap 的 URL 數量上限是 5 萬條,未压缩体积上限 50MB,任一超标都要繼續拆。
- 條目地址必须是绝對 URL,注意實体轉义與特殊字符编碼。
- 体积較大时可以使用 gzip 压缩,但索引文件里引用的地址要指向實际可訪問的压缩文件。
- 索引文件本身只列子 Sitemap 的位置與最後修改時間,不要再混入普通頁面 URL。
分片之後,入口仍要能被找到
索引文件不會自己被發現。至少保證三件事:robots.txt 里声明主索引文件地址;在站長平台提交同一個地址;站内保留一個 HTML 版本的站点地图頁,让用戶和搜尋蜘蛛都能顺着連結進入各分片。三條路径相互补位,單條失效时不至于完全断掉。
分片管理最容易踩的坑
- 只提交子分片,不提交索引:新增分片容易被漏掉,也看不到整体規模。
- lastmod 全站寫成同一時間:這個字段就失去了參考意义,不如只對真正更新的分片做改動。
- 舊分片長期没人動:内容下线後分片仍指向 404 地址,成了無效入口。
- 频繁改名或換路径:每改一次,之前的入口就作废一次,歷史提交记錄也跟着断掉。
- 索引里塞外部地址:只有同一站点体系下的地址才适合放進索引。
索引文件解决的是“清單怎么组织”,不是“一定會被收錄”。它让搜尋蜘蛛更容易拿到一批可用地址,剩下的仍然取决于頁面本身、内鏈结构和服務器稳定性。
一個够用的维護节奏
- 每月核對索引文件列出的分片是否都能正常訪問,返回 200 且内容非空。
- 检查各分片的 URL 數量,接近上限时提前拆分。
- 内容下线时同步從分片移除,而不是把地址留在清單里。
- 抓取日誌出現異常时,先確認最近的抓取集中在哪個分片,再决定優先修哪一块。
把分片当作站内目錄结构的另一種映射,维護起来就不會太費劲:结构變了,分片跟着變;结构稳定,分片基本不用動。