站点地图(sitemap)本质上是一份给蜘蛛看的 URL 清單。它能做的是把站点希望被抓取的地址集中列出来,降低“蜘蛛不知道有這些頁面”的概率;它不能保證收錄,也不能替代内鏈和内容质量。很多站点的問题不在“有没有站点地图”,而在于這份清單長期没人维護,慢慢變成一份過期台帳。
先確認站点地图真的被引用和讀取
做最基础的確認:站点地图能否正常打開,返回狀態碼是否為 200,内容類型是否合理(XML 文件通常是 application/xml 或 text/xml)。如果服務器把 .xml 当成下载文件,或者地址返回 404,後面的優化都無從谈起。
- 確認 robots.txt 中寫了 Sitemap 指令,並且使用完整 URL。
- 確認站点地图地址没有大小寫错誤、多余斜杠和层层重定向。
- 提交到搜尋资源平台後,隔几天回看抓取與解析情况,而不是提交完就当任務結束。
哪些 URL 该進,哪些不该進
清單越長越好是個常见誤解。站点地图里每多一條無效或重复地址,都會消耗一次無意义的抓取尝试。取舍原則可以參考以下几点:
- 该進:正常返回 200 的正文頁、栏目列表頁、有獨立内容價值的聚合頁。
- 慎重:分頁列表的深层頁碼,视站点規模和抓取预算决定。
- 不该進:登入、购物车、後台等對蜘蛛無意义的頁面。
- 不该進:被 robots.txt 屏蔽的目錄,放進清單本身就是自相矛盾。
常见错誤自查清單
- 清單中存在 robots.txt 明确禁止抓取的地址。
- 包含大量带篩選、排序參數的组合 URL,且内容與主列表高度重复。
- 寫的是 301、302 的跳轉地址,而不是跳轉後的最终地址。
- 包含已经下线、返回 404 或 410 的頁面。
- 包含 canonical 指向其他頁面的地址,等于让蜘蛛抓到一份“副本入口”。
- 同一頁面同时出現 http 與 https、带 www 與不带 www 两種寫法。
- lastmod 全部是同一時間,或者标注的時間比頁面實际更新還新。
規模大了就用索引文件拆分
單個站点地图文件一般不超過 5 萬條 URL、50MB(未压缩),超過這個量級就應拆成多個子地图,再用 sitemapindex 索引文件串起来。拆分维度建议按栏目或内容類型划分,出問题时容易定位是哪一個板块的清單在报错。索引文件里填的是子地图文件的地址,不是具体頁面地址。
更新频率與 lastmod 怎么寫
changefreq 和 priority 如今基本只是提示性字段,不會被嚴格遵循,但 lastmod 值得認真對待:只有内容确實發生變化时才更新,不要為了“看起来活跃”批量刷時間。站点規模小,手動维護可以接受;規模大,就交给程序在發布、修改、刪除时自動同步,避免人工遗漏。
它和 robots、canonical、内鏈的分工
站点地图不是孤立工具。被 robots.txt 屏蔽的地址不要寫進清單;canonical 指向他頁的地址,清單里應该放 canonical 的目标地址;重要頁面除了進清單,還得有站内連結入口。站点地图负责“告知有哪些地址”,内鏈负责“让地址更容易被發現和传递權重”,两者不能互相替代。
把站点地图当成一份需要定期核對的清單,而不是一次性提交的文件。每次结构調整、栏目下线、URL 規則變更之後,都應该回来看一眼它是否還跟得上目前站点。
一個可执行的核對节奏
- 每周:检查站点地图能否訪問、是否被成功解析。
- 每月:抽查清單中的 URL 狀態碼,清理失效地址與重复條目。
- 每次改版:確認新 URL 已加入,舊 URL 已移除或替換為最终地址。
這些動作花不了多少時間,却能避免蜘蛛拿着一份過时清單反复空跑。站点地图的價值在于准确和及时,而不是條目數量。