Sitemap 的作用是给蜘蛛提供一批可抓取的入口候選,但它並不能决定哪些頁面會被收錄。實际抓取时,蜘蛛仍會按自己的判断去驗證:這個地址返回什么狀態碼、是否可索引、和站内其他入口是否指向同一個規范地址。所以 Sitemap 的價值不在于“列得多”,而在于“列得准”。
Sitemap 是入口清單,不是收錄開關
把 Sitemap 理解成一份“备選入口列表”更准确。蜘蛛讀取後會把其中的 URL 放入待抓取队列,之後是否繼續抓、抓多深,取决于頁面本身的响應质量、内鏈支持度和站点整体的抓取节奏。批量塞入低质地址,反而會稀释抓取资源,让真正需要更新的頁面排队更久。
适合放進 Sitemap 的地址
- 可索引的規范地址:返回 200,canonical 指向自身,没有被 robots 或 meta 标记為 noindex。
- 有實际内容的列表頁與詳情頁:空列表、纯篩選结果、内容极少的過渡頁,價值有限。
- 内鏈中已有入口的頁面:Sitemap 與内鏈互相印證,能提高被發現後的抓取确定性。
- 更新較有規律的栏目:配合真實的 lastmod,便于蜘蛛判断哪些分区值得回訪。
不建议放進 Sitemap 的地址
- 跳轉地址:301、302 的目标應直接寫终点 URL,把跳轉鏈留在 Sitemap 里只會增加一次額外請求。
- noindex 頁面:既然明确不希望被索引,就不必再主動提交入口。
- 非規范地址:带追踪參數、大小寫混用、多版本尾斜杠的變体,容易造成同一内容被多次抓取。
- 404 與失效頁:歷史地址長期返回错誤碼时,應從 Sitemap 中移除,而不是留着等待“恢复”。
lastmod 要真實,才能当作回訪信号
如果每次生成 Sitemap 都把 lastmod 刷成目前時間,這個字段就失去了參考意义。更稳妥的做法是让它對應内容的實质性變更:正文調整、價格變動、库存更新等。格式统一、时区一致,避免同一頁面出現忽前忽後的時間。更新频率不高的栏目,不必强行提高声明频率。
與内鏈、canonical 做一致性核對
Sitemap 里寫的地址、内鏈指向的地址、頁面自身 canonical 声明的地址,三者最好指向同一個 URL。出現分歧时,蜘蛛可能按自己的規則做归一化,结果與你期望的入口不一致。常见分歧点包括:是否带 www、是否用 https、路径末尾斜杠、參數顺序、大小寫。
一個可执行的核對顺序
- 從 Sitemap 中抽样一批 URL,逐個請求,记錄狀態碼與最终落地地址。
- 對跳轉和 404 的地址做分類:是歷史遗留,還是配置错誤。
- 检查頁面 canonical 是否與 Sitemap 中的寫法一致。
- 對照蜘蛛日誌,看這些入口被抓取後,是否繼續爬到了内鏈中的下一层。
- 把確認無價值的地址從 Sitemap 移除,並在内鏈中减少同類入口。
判断标准可以很简單:一個 URL 如果既不能被索引,又不是用戶真正會訪問的地址,就不需要在 Sitemap 里占位置。
分片與更新节奏的小提示
URL 數量較多时,按栏目或内容類型分片,比把所有地址堆在一個文件里更好维護。分片文件的 lastmod 可以反映该分区的整体更新情况,但不必每次全量重寫。新增内容及时加入,下线内容及时剔除,保持清單與站点真實结构大体同步即可。
最後提醒一点:Sitemap 是 URL 發現通道之一,不是唯一。内鏈结构、栏目頁、列表翻頁同样承担着發現职责。把 Sitemap 整理干净,同时让内鏈可爬、服務器响應稳定,抓取效率才會稳定在一個合理水平。