站点規模變大後,單個 Sitemap 往往装不下所有 URL。分片和索引文件是常见做法,但它不是把文件切碎就完事。分片怎么切、索引文件放在哪、分片内容是否可訪問,都會影响搜尋蜘蛛能不能顺利發現 URL。
分片拆分:按什么维度切更合理
协议允许每個 Sitemap 最多放 50000 個 URL,未压缩大小不超過 50MB。實际拆分时,不必卡着上限,可以按内容類型、更新频率或栏目层級来分。這样後續排查和更新都更清楚。
- 按内容類型:文章、商品、专题、帮助文档各自一個分片,便于观察哪類 URL 發現慢。
- 按更新频率:高频更新的列表頁和低频的静態頁分開,减少每次全量重寫。
- 按語言或地区:多語言站点分開,避免不同語言 URL 混在一起。
分片數量不是越多越好。几十個分片還算好管理,几百個就要考虑索引文件是否清晰、分片地址是否規則。
索引文件要能被稳定發現
Sitemap 索引文件本身也是一個入口。它需要被提交到搜尋资源平台,並在 robots.txt 中声明。索引文件里列出的分片地址必须是可訪問的绝對地址,返回 200 狀態碼,内容類型為 XML。如果分片開了 gzip,索引里的地址和實际返回要一致。
- 索引文件不要嵌套索引文件,层級尽量只有一层。
- 分片地址不要带随机參數或會话參數。
- 分片里的 lastmod 要真實,不要每次生成都改成目前時間。
- 分片文件不要設定 noindex,也不要用 robots.txt 屏蔽。
分片内容與内鏈互相驗證
分片负责告诉搜尋蜘蛛“這里有 URL”,但不保證它一定會抓取。要判断發現是否正常,可以把分片里的 URL 和站内連結、服務器日誌交叉看。如果某個分片里的 URL 長期没有抓取记錄,可能是分片本身有問题,也可能是這些 URL 缺少内鏈入口。
分片解决的是發現入口問题,抓取和索引還取决于頁面质量、服務器响應和内鏈结构。不要把分片当成收錄保證。
更新、下线與分片维護
分片不是生成一次就不用管。内容更新、頁面下线、改版換地址,都要同步到分片。處理时可以按下面顺序核對:
- 確認新 URL 已经能正常訪問,返回 200,並且頁面内容不是空壳。
- 把新 URL 加入對應分片,更新 lastmod,重新提交索引文件。
- 下线的 URL 從分片中移除,同时保留舊地址返回 410 或 404 一段時間,不要让舊地址直接跳向無關頁面。
- 改版換地址时,用 301 把舊地址指向新地址,並更新分片中的地址。
- 观察日誌里分片地址和頁面地址的抓取频率,確認没有出現只抓分片不抓頁面的情况。
常见配置错誤
- 分片地址返回 HTML 错誤頁,搜尋蜘蛛拿到的是错誤内容。
- 索引文件里寫的是相對地址,解析後指向不存在的路径。
- 分片大小寫不一致,同一批 URL 出現两種寫法。
- 把不同协议、不同域名下的 URL 混在同一個索引里。
- 分片里包含大量重定向地址或參數地址,增加無效抓取。
大型站点的 URL 發現,往往不是缺一個入口,而是入口太多、太乱或者中途断掉。定期抽查索引文件、分片文件和日誌中的抓取痕迹,比一次性生成全部文件更有用。