很多人把 sitemap 当成一個開關:文件生成、提交、等几天,然後在报告里看不到變化,就判断「蜘蛛没讀」。實际情况是,sitemap 主要解决URL 發現,它只是告诉搜尋引擎這些地址存在;地址能不能進索引,仍然要過抓取、渲染、内容判断這几道關。
sitemap 能做到和做不到的事
能做到的:在頁面层級很深、内鏈不足、站点又比較新的情况下,让蜘蛛拿到一份相對完整的地址清單,同时顺带提供更新時間的信号。做不到的:不能强制抓取,不能让内容不足的頁面進索引,也不會因為放進 sitemap 就获得排名優势。
所以把它看作「投递清單」更准确。清單寫得越干净,蜘蛛把時間花在有價值頁面上的比例越高;清單越乱,抓取時間就越容易被消耗在無意义的地址上。
哪些 URL 放進 sitemap 是浪費位置
- 不能返回 200 的地址:301、302、404、410 都不该出現在清單里,只寫最终可訪問的那個 URL。
- 被 noindex 的頁面:既然不想让它進索引,就不必再請蜘蛛来讀。
- canonical 指向別處的頁面:清單里應该寫規范地址,而不是被收敛的副本。
- 參數生成的重复頁:篩選、排序、跟踪參數生成的變体各寫一條,只會让清單變脏。
- 内容极薄的模板頁:空标簽頁、無结果列表、纯占位頁,提交上去多半也會被排除。
文件本身的几個细节
只寫規范、可索引的 URL
一個 URL 在站内只應有一個「官方版本」。www 與非 www、带尾斜杠與不带、大小寫,選定一種固定下来,並让 sitemap、内鏈、canonical 三處保持一致。
lastmod 要真實
每次生成都刷新全部時間戳,會让更新信号失去意义。只在内容确實變化时,才改對應條目的時間。
分片與索引文件
單個文件有條數和体积上限,頁面多的站点應拆成多個子 sitemap,再用索引文件串起来。分片同时也方便按栏目單獨观察抓取情况。
提交之後怎么核對
- 看服務器日誌里蜘蛛對 sitemap 地址的請求,確認讀取频率是否正常。
- 對比清單條數與「已發現、已抓取」的數量,差距過大說明部分地址连抓取队列都没排上。
- 抽查一批 URL,核對狀態碼、canonical、noindex 是否與预期一致。
- 找出被反复抓取却始终没進索引的地址,那通常是内容质量或重复問题,而不是 sitemap 問题。
把 sitemap 当成收錄保證,容易忽略真正的瓶颈:内容價值和重复度。它更像一份减少蜘蛛迷路的路线图,而不是入场券。
几個常见誤区
- 提交後马上查收錄,结论下得太早。抓取和索引都有排队過程。
- 為了數字好看,把全站 URL 不分狀態全塞進去,反而稀释了重点頁面。
- 站内已有多個入口的頁面仍反复提交,收益有限;重点應放在缺少内鏈的深层頁面。
- 頁面删掉了却不更新清單,蜘蛛按舊清單反复訪問,拿到一堆 404。
说到底,sitemap 是给蜘蛛的地址清單。寫得准、寫得干净、與站内連結和 canonical 保持一致,它的作用才真正發挥出来;至于是否收錄,最终還是頁面本身说了算。