站点地图被不少人当成“提交即收錄”的開關,實际上它只负责一件事:帮助搜尋引擎發現 URL。發現之後是否抓取、抓取之後是否進入索引,仍取决于頁面本身的可抓取性、内容质量和重复情况。所以当文件里列了几百個地址、收錄數字却几乎没動时,問题往往不在“提交”這個動作,而在文件里放了什么。
sitemap 只解决發現环节
它是一份候選清單,不是索引指令。把不可索引、不值得索引的地址混進去,會带来两個後果:一是抓取资源被消耗在無效地址上,二是在長期只看到無效 URL 的情况下,調度方會降低對整個文件的采信程度。換句话说,sitemap 的效力取决于里面 URL 的干净程度,而不是提交次數。
三類最该先清出去的 URL
明确不可索引的地址
被 robots.txt 屏蔽的路径、带 noindex 的頁面、需要登入才能訪問的頁面,都不應出現在文件里。這類地址反复被抓取却始终返回“不要索引”的信号,對整份清單没有正面作用。
會跳轉的地址與已失效的地址
sitemap 只應寫入最终狀態碼為 200 的規范 URL。把 301 之前的舊地址、返回 404 或 410 的地址列進去,等于让發現环节绕路。站点改版或換域名後,舊的 sitemap 文件要及时下线或替換,避免新舊两份並存、互相指向。
重复版本與參數组合
带排序、篩選、跟踪參數的 URL 通常與主版本高度重复。如果這些頁面没有獨立價值,就不要逐個列入。分頁序列一般通過頁面之間的連結自然衔接即可,不必把每一頁都塞進文件。
lastmod 不是装饰字段
它代表内容的最後實质性修改時間,而不是模板渲染時間或文件生成時間。如果每次生成文件都把 lastmod 刷成目前時間,而頁面正文並没有變化,這個字段很快會失去參考價值——調度方看到“天天更新”却抓不到新内容,就會降低對它的信任。更稳妥的做法是:只在正文、價格、库存等實质内容變動时才更新该字段,並保持格式统一。
分片與索引文件
單個文件建议不超過五萬條 URL、压缩前不超過 50MB,超出後拆分成多個子文件,並用一個索引文件指向它們。分片的意义在于让讀取方分批處理、分批判断,而不是让文件结构更整齐。如果其中一份長期塞满失效地址,影响的不只是那一份。
一份可执行的核對顺序
- 確認 sitemap 地址可正常訪問、返回 200,且與 robots.txt 中的声明一致。
- 抽样检查文件内 URL 是否全為最终規范版本:無跳轉、無多余參數、無 noindex 頁面。
- 抽查 lastmod 與内容實际變更時間是否吻合,剔除批量刷新的假時間戳。
- 對比文件中的 URL 數量與索引中的實际數量,找出長期“列了但未被處理”的区間。
- 對長期不被抓取的部分,回到内鏈结构和頁面质量上找原因,而不是反复重新提交。
提交之後還要看什么
文件只是入口,真正的通路是内鏈。一個只在 sitemap 里出現、站内没有任何連結指向的孤立 URL,被抓取的概率依然偏低。因此排查顺序通常是:先清理文件内容,再检查這些 URL 是否從導航或正文中可達,最後才看内容本身是否具备被索引的條件。
站点地图是“告知”,不是“要求”。它的價值来自清單里 URL 的准确與干净,而不来自提交動作本身。