站点运营

站点运营:站点地图自查,別让地图把蜘蛛带進死胡同

站点地图常被配置一次就再没人打開,可它其實是递给蜘蛛的一份新内容清單。這份清單如果混進重定向、404、noindex 頁面或參數组合地址,抓取配額就會被白白消耗。本文梳理地图自查的五個步骤與一份可执行清單,帮运营者確認地图里的地址真實可用、時間戳可信、地图本身也能被正常抓取。

站点运营

站点运营:站点地图自查,別让地图把蜘蛛带進死胡同

站点地图(sitemap)经常是配置一次就再没人看過的文件。可在實际运营里,它更像是一份递给蜘蛛的“新内容清單”:哪些地址值得抓、大概什么时候更新過。清單寫错,蜘蛛照着跑一圈,抓取配額就浪費在重定向、404 或者重复參數頁上。

第一步:確認地图里的地址都能直接打開

把 sitemap 里的 URL 抽样或全量跑一遍,看返回狀態碼。下面這些地址不该出現在地图里:

  • 301、302 跳轉地址,應该寫跳轉後的最终地址;
  • 404、410 以及已经刪除的舊頁面;
  • 带 noindex 的頁面,地图邀請抓取、頁面自己又拒绝索引,信号互相矛盾
  • 需要登入或需要 Cookie 才能訪問的頁面;
  • 篩選、排序、分頁组合出来的參數地址,這類地址數量巨大且内容重复。

同时核對地图中的 URL 與頁面自报的 canonical 是否一致。如果地图寫 A、頁面 canonical 指向 B,蜘蛛會優先相信頁面本身,多出来的 A 基本属于無效條目。

第二步:lastmod 只寫真實更新時間

lastmod 是地图里最容易被滥用的字段。有的站点為了“提醒蜘蛛”,每次生成地图都把全部地址的時間刷成目前時間。短期看不出問题,時間一長,蜘蛛會發現這個時間不可信,進而降低對整份地图的信任度。

更稳妥的做法是让 lastmod 直接取自内容系統的真實修改時間,並且只在正文實质變動时更新,模板調整、侧栏改版這類改動不必動它。格式统一用带时区的日期時間,避免出現未来時間。

第三步:注意分片與索引文件的硬限制

  • 單個 sitemap 文件不超過 50MB(未压缩),收錄地址不超過 50000 條;
  • 超過後拆成多個分片,再用 sitemap 索引文件统一列出,索引文件本身也有數量上限;
  • 文件使用 UTF-8 编碼,URL 中的特殊字符要正确轉义;
  • 分片按内容類型或栏目划分,比按時間机械切成一堆碎片更好维護。

第四步:地图本身也要让蜘蛛拿到

在 robots.txt 里用绝對地址声明 Sitemap 位置,注意別顺手把 sitemap.xml 用 Disallow 挡住,也別让它被登入墙或 CDN 規則拦住。生成方式同样要考虑性能:几萬條地址如果每次請求都實时查库拼装,蜘蛛一抓就是一次資料库压力,最好做成定时生成加静態缓存。

第五步:用日誌看地图有没有起作用

地图提交之後,從服務器日誌里確認几件事:蜘蛛是否真的請求了 sitemap 文件、請求频率是否稳定、地图里的地址有多少在随後一段時間内被實际抓取。如果地图天天被拉取,但里面地址的抓取率很低,問题多半不在蜘蛛,而在地图质量或站点整体结构與内鏈上。

一份可以照着走的检查清單

  1. 地图中每個 URL 返回 200,且與頁面 canonical 一致;
  2. 只收錄規范地址,不含參數组合、分頁和搜尋结果頁;
  3. lastmod 来自真實更新時間,格式统一且没有未来時間;
  4. 分片數量與單文件大小都在限制之内,索引文件可正常訪問;
  5. robots.txt 中已声明地图地址,地图未被誤屏蔽;
  6. 地图生成不拖慢服務器,有缓存或定时任務;
  7. 定期從日誌和站長平台核對抓取情况,發現異常條目及时清理。
站点地图是补充手段,不是替代方案。如果站内導航混乱、重要頁面埋得很深,再完整的地图也救不回抓取效率。

把這几步固定成月度或季度的例行動作,地图就不會變成一份“提交之後再也没人打開”的文件。