站点运营

站点地图的维護與自查:提交之後才是開始

很多站点上线时在 robots.txt 里寫一行 Sitemap 就再没管過,半年後文件里還留着已下线的栏目和過期的 lastmod。本文讲站点地图真正的作用、分片與索引文件的處理、lastmod 怎么才算真實、哪些地址不该放進去,以及提交之後该盯哪几個指标和一份可执行的自查清單。

站点运营

站点地图的维護與自查:提交之後才是開始

很多站点上线时會在 robots.txt 里寫一行 Sitemap 地址,然後這件事就再也没有被提起過。半年後回头看,那個 XML 文件里還留着已经下线的栏目、改過路径的舊地址,以及一堆 lastmod 停在上线当天的记錄。蜘蛛照样會来,但它拿到的是一份過期的地图。

站点地图解决的是什么問题

站点地图不保證收錄,也不提升排名,它的作用只有一件事:告诉抓取端這里有哪些地址、以及大概什么时候更新過。對于連結层級深、内鏈稀疏,或者新頁面一时半會儿進不了導航的站点,它是一個比較可靠的补充渠道。如果站点本身结构扁平、内鏈完整、蜘蛛每天都来,那站点地图的重要性會下降,但维護成本也很低,没有理由放着不管。

分片與索引文件

單個 sitemap 文件有地址數量和体积的上限,一般按 5 萬條 URL、未压缩 50MB 来規划。超過之後不是能不能提交的問题,而是抓取端可能讀不完或者干脆放弃。常規做法是按栏目、按内容類型或者按時間切分,比如文章、商品、专题各一個文件,再用一個 sitemap 索引文件把它們列出来。索引文件本身不要再嵌套索引,层級越浅越好。

  • 按栏目切分最直观,出問题时也方便單獨排查
  • 如果某個栏目更新极快,可以再按月份切片,避免整份文件频繁變動
  • 索引文件和子文件的地址保持同域名,不要跨域引用

lastmod 要真實

lastmod 是最容易被滥用的字段。有人每次生成 sitemap 就把所有頁面的時間刷成目前時間,结果是每天都告诉抓取端全站都更新了,久而久之這個字段就失去了參考價值。更稳妥的做法是让它来自内容本身的實际修改時間,模板調整、样式改版這類不影响正文的改動不要動它。

如果一份 sitemap 里所有頁面的 lastmod 都是同一天,那它提供的更新信号基本等于零。

不该放進去的地址

站点地图是推荐抓取的清單,不是全站地址备份。下面這些放進去只會浪費抓取机會:

  • 已经返回 404 或 410 的頁面
  • 會 301 跳轉的舊地址,直接放跳轉後的目标地址就行
  • 設定了 noindex 的頁面
  • 带篩選參數、排序參數产生的重复地址
  • 需要登入才能看到内容的頁面
  • 站内搜尋结果頁和临时生成的列表頁

前几類属于互相矛盾:一邊告诉抓取端別索引,一邊又把它列進推荐清單,只會让判断變复杂。

生成方式

静態站可以靠构建脚本生成;内容管理系統一般有現成插件,但插件預設配置往往把草稿、附件、标簽全塞進来,需要手動調整范围。手工维護一份纯静態 XML,在几百個頁面以内還能接受,再往上就容易和真實内容脱节。無论哪種方式,關键是把生成這一步接到内容發布流程里,让新頁面出現时自動進文件、頁面下线时自動移除,而不是靠人定期补。

提交之後的监控

把地址寫進 robots.txt 只是起点。之後要看的指标其實很少:文件是否能正常訪問、返回狀態是不是 200、里面的地址是否還是 200、數量有没有異常突增或骤减。數量骤减通常是生成脚本出错,骤增往往是參數地址漏了進来。這些異常在服務器日誌和抓取統計里都能看到,不需要額外的工具。

一個可执行的自查清單

  1. 直接訪問 sitemap 地址,確認返回 200 且内容是 XML
  2. 抽查十個里面的地址,確認都是 200 且能正常打開
  3. 確認文件里没有 404、301、noindex 的地址
  4. 確認 lastmod 與頁面實际更新時間一致
  5. 確認索引文件能列出全部子文件,且子文件都能訪問
  6. 確認 robots.txt 里的 Sitemap 地址拼寫正确、没有多余斜杠
  7. 在内容發布流程里找到新頁面如何進入 sitemap 這一步,確認它是自動的

這件事本身不复杂,难点在于它容易被忘掉。把它和栏目調整、内容下线放在同一個检查流程里,比單獨记一個待办要可靠得多。