很多站点的 sitemap 是建站时生成一次,之後就没再管過。等到抓取出現異常、新頁面迟迟不见動静,回头一看,這個文件里還躺着一批早就删掉的地址,而最近上线的栏目一個都没寫進去。sitemap 不會直接带来排名,但它是一份告诉搜尋蜘蛛「這里有哪些頁面值得来看看」的清單。清單過期,等于递给對方一張舊地图。
先分清 sitemap 的两種角色
常见的说法里其實混着两样東西。一種是 XML 站点地图,寫给蜘蛛讀,要求准确、简洁、结构規范;另一種是给用戶看的 HTML 站点地图頁面,讲究可讀性和内鏈引導。两者的寫法、更新频率、检查重点都不一样,不要把 HTML 頁面直接当成 XML 文件提交,也不要用 XML 文件替代站内的導航入口。
常见的几類問题
- 文件里包含大量 404、410 或者已经跳轉的舊地址,蜘蛛顺着走一趟拿不到有效内容。
- 新發布的栏目和文章長期不出現,入口文件與後台已發布内容對不上。
- lastmod 全部是同一個時間,或者每次生成都统一刷成目前時間,看不出真實修改痕迹。
- 單個文件地址數量或体积超出上限,却没有做分片。
- 做了分片,但索引文件里没有把分片地址列全,等于只提交了一部分。
- robots.txt 中誤屏蔽了 sitemap 所在路径,或者 sitemap 里包含被 robots 屏蔽的目錄,規則互相打架。
- 只覆盖了首頁和几個主要栏目,深层内容一概没有。
一套可以照着做的自查步骤
- 直接在浏览器打開 sitemap 地址,確認返回狀態正常,内容是規范的 XML 结构,不是错誤頁或者登入頁。
- 随机抽取二三十條地址,逐條訪問,记錄狀態碼、最终落点、是否能正常渲染正文。
- 把 sitemap 里的地址與自己後台已發布的内容做一次比對,重点看新增栏目有没有遗漏、下线内容有没有残留。
- 抽查 lastmod 字段,判断它反映的是内容真實修改時間,還是模板里的預設值。
- 如果做了分片,检查索引文件與各分片文件的對應關系是否完整,有没有指向已刪除的分片。
- 到 robots.txt 里確認 sitemap 的声明是否存在、路径是否正确,並检查两邊規則是否冲突。
關于 lastmod 的寫法
如果頁面内容确實没有變化,就不要更新這個字段。把整份文件的時間戳统一刷新,看着很勤快,實际上會让這個字段失去參考意义,蜘蛛也無法據此判断哪些頁面更值得重新抓取。
大站的分片思路
按栏目分、按内容類型分、按發布時間分都可以,關键是索引文件能覆盖全部分片,並且分片地址本身不要在後續改版中被随意改動。分片文件每次重新生成後,索引文件也要同步更新。
別把 sitemap 当成唯一入口
sitemap 只是 URL 發現的通道之一。站内導航、栏目頁、正文内鏈、相關推荐、蜘蛛通過已有頁面爬出来的新路径,都在承担相同的职责。如果内鏈结构本身混乱,或者重要内容深埋在好几层之下,即使 sitemap 寫得再全,實际抓取效果也可能打折。反過来,内鏈通畅的站点,sitemap 更多是起到补充和兜底的作用。
提醒一句:sitemap 属于提交建议,不是收錄保證。蜘蛛是否會抓、什么时候抓、抓多少,取决于站点整体质量、抓取预算和内容更新情况,這些都不是一份文件能决定的。
多久检查一次比較合适
内容量大、更新频繁的站点,建议每周或每月核對一次;更新节奏慢的小站,按季度检查也够用。有几種情况要額外检查一次:刚做完網站改版、域名或目錄结构調整、大批量内容上下线、robots.txt 規則改動之後。這些操作最容易让 sitemap 與真實頁面狀態發生错位。
把 sitemap 当成一份需要维護的运营资料,而不是一次性的技術配置,很多抓取上的困惑會少一大半。