站点运营

站点运营:搜尋蜘蛛的URL發現,從XML站点地图的分片與lastmod标注说起

XML站点地图常被当成一次性提交任務,其實它是長期的URL清單。本文聊分片的判断信号、lastmod的寫法、哪些URL不该進地图,以及和维護流程的配合方式。

站点运营

站点运营:搜尋蜘蛛的URL發現,從XML站点地图的分片與lastmod标注说起

很多站点把站点地图当成上线时提交一次就完事的文件,之後几年不再動。但搜尋蜘蛛判断一個站点有哪些值得抓的URL,站点地图仍然是成本最低、最可控的一條线索。問题不在“有没有”,而在“准不准、全不全、更新及时不及时”。

站点地图是長期清單,不是一次性交付物

站点地图的價值在于它由站点自己声明:哪些URL存在、什么时候改動過。蜘蛛把它当作一份參考清單,用来和站内連結、歷史抓取记錄做交叉驗證。所以真正需要维護的是這份清單本身,而不是提交這個動作。

建议把它接進日常發布流程:新栏目上线、批量導入内容、下线舊专题时,同步更新站点地图。這样清單和站点的真實狀態不會脱节太久。

分片:什么时候该拆

單個站点地图文件通常建议控制在 5 萬條 URL、未压缩 50MB 以内,超出就拆成多個文件,再用一個索引文件(sitemap index)把它們列出来。但工程上限只是底线,實际拆分的判断更多来自内容结构。

  • 内容明顯分属不同栏目或业務线,拆開後便于單獨排查問题;
  • 某個板块更新频率极高(比如每日资讯),和其他板块混在一起會让 lastmod 失去參考意义;
  • 部分内容由程序批量生成,需要單獨观察抓取效果;
  • 站点经歷過改版或合並,舊内容的URL需要分批處理。

拆完之後,索引文件本身也要保持可訪問、内容简洁,不要在里面塞無關信息。

lastmod 怎么寫才可信

lastmod 是站点地图里最容易被滥用的字段。如果每次生成地图时把所有URL的時間戳都刷成当天,這個字段很快就失去意义,蜘蛛會倾向于忽略它,甚至降低對整份地图的信任度。

  • 寫内容發生實质性變化的時間,比如正文更新、價格調整、补充了新的段落;
  • 不要寫成生成脚本的執行時間;
  • 模板、样式、广告位變動不算内容更新;
  • 如果站点暂时没有可靠的時間来源,宁可留空,也不要填假資料。
一個稳定的判断标准:如果用戶看不出這一頁有什么變化,lastmod 就不该變。

哪些URL不该進站点地图

站点地图里混入不该出現的URL,會稀释清單质量,也让排查問题變难。

  • 返回 404、410 或長期 5xx 的地址;
  • 被 robots.txt 屏蔽、或頁面带有 noindex 的地址;
  • canonical 指向其他頁面的重复内容;
  • 带推廣參數、會话ID、排序篩選參數产生的變体URL;
  • 需要登入才能看到有效内容的頁面,除非你确實希望它們被收錄;
  • 分頁序列中間被合並或跳過的頁碼。

把這些排除掉之後,地图里留下的應当都是“希望被看到、且确實能看到内容”的地址。

與其他机制配合

站点地图不是孤立的。robots.txt 里声明索引文件的位置,是一個基础動作;canonical 自引用正确的頁面,放進地图才更稳妥;主動推送接口适合用来补时效性,站点地图负责覆盖面,两者分工不同,不需要互相替代。

另外,抓取预算有限的站点可以观察服務器日誌:地图里被频繁抓取的板块,說明蜘蛛認可它的價值;長期無人問津的板块,也许需要检查入口連結是否太浅、内容是否長期未更新。

上线後的检查清單

  1. 索引文件和各個分片都能正常打開,返回 200;
  2. 抽几條URL實际訪問,確認可訪問且没有跳轉異常;
  3. 確認没有 noindex、没有 robots 屏蔽、canonical 指向自身;
  4. lastmod 抽样核對,和内容後台的更新時間對得上;
  5. 在搜尋後台查看已提交與已發現的差异,找出長期未被抓取的板块。

站点地图做得好不好,短期看不出差別,但半年一年之後,它是排查“為什么這批頁面一直没被發現”时最直接的一份證據。