不少人把 sitemap 当成“提交了就應该收錄”的清單,于是把所有能生成的 URL 都塞進去。结果提交了几萬條,索引里只進去一小部分,报告里一堆“已發現但未编入索引”。問题往往不在搜尋引擎,而在于這份清單本身混進了大量不该出現的 URL。
先明确 sitemap 的定位
sitemap 是帮助搜尋引擎發現 URL 的辅助文件,它影响的是“發現”這一步,既不决定抓取频率,也不保證收錄。既然是發現清單,判断标准就很简單:這個 URL 如果被蜘蛛發現,我希望它被抓取和索引吗?答案是“不希望”的,就不该放。
适合放進 sitemap 的 URL
- 返回 200 的規范 URL,canonical 指向自身;
- 頁面可被抓取,没有被 robots.txt 屏蔽,也没有 noindex;
- 有獨立内容價值,不是同一内容的另一個參數版本;
- 站点希望用戶能從搜尋结果直接到達的頁面,比如文章、商品、专题頁。
數量不是目标。几十個真正獨立的頁面,比几萬條自動拼出来的 URL 更有參考價值。
常见该拿掉的几類
- 标记了 noindex 的頁面。一邊告诉搜尋引擎別索引,一邊又放進 sitemap 請它来抓,两個信号互相打架,最容易让抓取額度消耗在不會進索引的頁面上。
- 被 robots.txt 屏蔽的 URL。抓取已经被挡住,sitemap 里却還在列,蜘蛛只會反复碰壁。
- 重定向 URL。301、302 的舊地址應该直接換成跳轉目标,而不是繼續留在清單里。
- 404、410 等错誤頁。這些 URL 已经没有内容,留着只會制造無效抓取。
- 篩選、排序、跟踪參數頁。sort、color、utm 這類參數可以组合出接近無限的 URL,除非某個參數頁确實有獨立内容和搜尋需求,否則不该逐個提交。
- 重复變体。大小寫、末尾斜杠、http 與 https 等同一頁面的多種寫法,只保留規范的那一個。
- 登入後、後台與測試环境頁面。這些頁面本就不需要出現在搜尋结果里。
分頁和聚合頁怎么办
分頁 URL 是否放進 sitemap 没有统一答案。如果分頁是用戶和蜘蛛到達深层列表内容的主要路径,可以保留;如果分頁頁面本身没有獨立内容,且内鏈已经能覆盖,就不必全量提交。列表頁、标簽頁同理,關键看它有没有獨立價值,而不是看它能不能被生成出来。
一個可执行的核對顺序
- 先把現有 sitemap 里的 URL 按類型分组:内容頁、列表與聚合頁、分頁、參數頁、其他。
- 抽样打開每一類,检查返回狀態碼、canonical、meta robots 是否一致。
- 對照索引报告,看哪些分组長期停留在“已發現未编入索引”,優先從這些分组里做减法。
- 篩選之後,让 sitemap 只保留規范、可抓取、可索引的 URL,並保持它和站内連結、canonical 的说法一致。
- 之後按内容更新节奏調整 lastmod,不要每次發布都無差別地改全站時間。
把 sitemap 当成“推荐给搜尋引擎的頁面清單”,而不是“網站所有 URL 的存档”,它的作用才稳定。
最後提醒一句:整理 sitemap 通常不會立刻让收錄變多,它做的是减少無效信号,把有限的抓取引導到真正想被索引的頁面上。頁面最终是否被收錄,仍然取决于内容质量和站点整体情况。