Sitemap 是站点给搜尋引擎蜘蛛的一份路线图,告诉它哪些地址值得来抓。但很多人把它当成收錄開關:只要提交了,頁面就應该被收錄。實际並不是。Sitemap 只负责“發現”,是否抓取、是否索引,還要看頁面质量、站点權重和抓取配額。所以自查的目标不是让蜘蛛照單全收,而是別让無效地址浪費抓取资源,別让新頁面在角落里等蜘蛛碰运气。
先看 sitemap 里有没有不该出現的地址
最容易被忽略的問题是:sitemap 里混進了大量無效或不该抓的 URL。常见的有几類:
- 已经返回 404 的舊頁面,仍然留在 sitemap 中;
- 會 301/302 跳轉的地址,蜘蛛跟過去又回到另一個 URL;
- 設定了 noindex 的頁面,出現在 sitemap 里等于自相矛盾;
- 被 robots.txt 屏蔽的目錄,蜘蛛能看到地址却抓不了;
- 带篩選參數、排序參數、會话 ID 的地址,一頁生出几十個變体;
- 登入後、购物车、後台等不该被索引的頁面。
检查方式不复杂:把 sitemap 里的 URL 批量抽出来,随机抽样或用脚本跑一遍狀態碼,看返回 200 的比例。如果 404 和重定向占比明顯,先清理再提交。對參數地址,只保留 canonical 指向的那個版本,其余不要放進 sitemap。
lastmod 不要乱寫
lastmod 是告诉蜘蛛“這個頁面最近什么时候有實质變化”。有些程序每次生成 sitemap 都把 lastmod 刷成目前時間,頁面内容却没變。短期看蜘蛛會来得勤,長期看這個字段就失去可信度,蜘蛛會降低對它的參考權重。
更稳妥的做法是:lastmod 只在正文、标题、關键信息确實修改时才更新。如果用的是 CMS,检查模板輸出的是文章修改時間,還是 sitemap 生成時間。两者差別很大。對于列表頁、聚合頁,如果只是排序變化,不建议频繁改 lastmod。
分片與索引文件要能對上
頁面多的站点通常會把 sitemap 拆成多個文件,再用一個索引文件(sitemap index)串起来。這里容易出現两個問题:一是新增了分片,索引文件没更新,新分片等于没提交;二是舊分片删了,索引里還留着死鏈。
建议把 sitemap 生成和索引更新放在同一個流程里,每次發布新内容後自動重建。文件本身可以開 gzip 压缩,單個 sitemap 不超過 5 萬條 URL、未压缩不超過 50MB,這是通用限制。超過就繼續分片,不要硬塞。
提交之後要看資料,不要只提交
Sitemap 提交到搜尋资源平台後,要過一段時間看“已提交”和“已索引”的差异。如果提交了很多,抓取却很少,可能是服務器响應慢、頁面质量低,或者 sitemap 里無效地址太多。如果某個栏目長期不抓,检查它是否在 sitemap 里,是否被 robots 屏蔽,是否有内部連結指向。
另外,robots.txt 里可以寫一行 Sitemap 地址,方便蜘蛛直接找到。多個 sitemap 就寫多行。這個位置不占抓取预算,但能减少蜘蛛瞎找的時間。
几個容易忽略的细节
- sitemap 只放返回 200 且允许索引的規范地址;
- 不要放 noindex、robots 屏蔽、登入後頁面;
- 新内容發布後,確認它已经進入下一次生成的 sitemap;
- 如果用了 CDN 或缓存,检查 sitemap 文件本身是否被缓存成舊版本;
- 定期抽样訪問 sitemap 里的 URL,看是否有成片失效;
- 不要把 sitemap 当成内鏈的替代品,重要頁面仍要有站内入口。
把 Sitemap 当成一份需要维護的清單,而不是一次性提交的任務。它的價值在于让蜘蛛少走弯路,而不是保證每個地址都被收錄。
最後提醒一句:不同搜尋引擎對 sitemap 的支持程度和抓取策略不完全一样,但“只放有效地址、lastmod 真實、索引同步、提交後看資料”這几條是通用的。把它們做成例行检查,比临时抱佛脚更有用。