Sitemap 本质上是一份给搜尋蜘蛛看的 URL 清單。它不保證收錄,但能帮助搜尋引擎更快發現站内的重要頁面。很多站点在刚上线时提交一次,之後就不再管,结果文件里的 URL 要么已经 404,要么缺少新栏目,蜘蛛来了一趟也找不到太多有效入口。
先確認蜘蛛是否真的在抓 sitemap
不要只看提交成功提示。可以到服務器日誌里搜 /sitemap.xml 或 sitemap 索引地址,看搜尋蜘蛛有没有定期訪問。如果日誌里几乎没有记錄,先检查 robots.txt 是否誤拦,再確認 sitemap 地址是否可公開訪問、返回碼是否為 200。
- robots.txt 中是否允许抓取 sitemap 文件
- sitemap 地址是否寫在 robots.txt 的 Sitemap 指令里
- 是否在搜尋资源平台提交了最新地址
- 服務器是否對 sitemap 做了不必要的鉴權或限流
拆分與容量:別把所有 URL 塞進一個文件
單個 sitemap 有數量和体积限制,通常建议控制在 5 萬條 URL、未压缩 50MB 以内。超過之後要拆分成多個子文件,再用 sitemap index 匯總。按栏目或内容類型拆分還有一個好處:某個子文件出错时,不會影响其他栏目的 URL 發現。
拆分不是越细越好。分得太碎,索引文件變多,维護成本也會上升。按内容板块划分通常够用。
只放可索引、返回 200 的 URL
這是最常见的誤区:把站内所有連結都丢進 sitemap,包括篩選參數頁、搜尋结果頁、已下架頁面和重定向地址。這些 URL 要么不该被索引,要么最终會跳轉,放進去只會浪費抓取预算,也让 sitemap 的可信度下降。
- 返回 301/302 的地址不要放
- 返回 404 或软 404 的頁面不要放
- 設定了 noindex 的頁面不要放
- 站内搜尋结果頁、參數组合頁谨慎放入
- canonical 指向其他 URL 的頁面,優先放 canonical 目标
lastmod 不要随便寫
lastmod 用来告诉蜘蛛頁面最後一次實质性更新的時間。如果每次生成 sitemap 都刷新所有 lastmod,蜘蛛會逐渐忽略這個字段。建议只在正文、标题或關键信息确實變化时更新,格式使用 W3C 日期時間,並注意时区一致。
让更新和监控形成习惯
新内容發布後,sitemap 應该能自動更新,而不是靠人工每月补一次。可以設定一個简單的定时任務,定期抓取自己的 sitemap,检查狀態碼、URL 數量和最後修改時間。發現異常时,先修 sitemap,再去看抓取和索引情况。
- 發布内容後触發 sitemap 更新
- 每周检查 sitemap 是否可正常訪問
- 每月抽查子文件中的 URL 是否仍返回 200
- 记錄蜘蛛對 sitemap 的訪問频率,观察變化
最後提醒一句:sitemap 是辅助工具,不是收錄保證。它能把 URL 送到蜘蛛面前,但頁面是否被索引,還要看内容质量、站点结构和抓取狀態。把 sitemap 维護成一份准确、干净的清單,長期看比一次性提交大量地址更有用。