站点运营

站点运营:站点地图自查,別让 sitemap 塞满失效與不该出現的地址

站点地图是對外的一份地址承诺,長期不维護反而會浪費蜘蛛的到訪時間。本文梳理 sitemap 常见的三類問题——混入重定向或 noindex 地址、lastmod 失真、分片與索引文件無人管,並给出一套可以照着做的定期自查流程,帮助站点运营者让清單和站内真實狀態保持一致。

站点运营

站点运营:站点地图自查,別让 sitemap 塞满失效與不该出現的地址

站点地图(sitemap)看起来只是一份 XML 文件,實际是對外發出的一份地址承诺:清單里的每個地址,都應该是你希望被索引、並且确實能正常打開的頁面。文件生成一次就放着不管,蜘蛛按图索骥却频频撞上跳轉和错誤頁,這份承诺就變成了负担。

sitemap 的定位:可索引地址清單

很多人把 sitemap 当成“全站地址备份”,于是把所有能想到的 URL 都塞進去。更合理的定位是:只放那些你希望被收錄、且目前返回正常狀態的規范地址。不在這份清單里的頁面依然可以被抓取和索引,sitemap 只是提高發現效率,不是收錄開關。

三類最常见的問题

一、混進了不该出現的地址

  • 已经被 301 跳轉的舊地址,清單里還留着老路径;
  • 設定了 noindex 的頁面,sitemap 和 meta 指令互相矛盾;
  • 篩選參數頁、排序參數頁、會话追踪參數頁被批量寫入;
  • 已经下线返回 404 或 410 的内容,仍停留在清單中;
  • 登入頁、後台頁、測試环境域名等不该公開抓取的地址;
  • 分頁列表的第二頁之後,是否收錄需要單獨判断,不宜預設全放。

這些地址看不出問题,直到你拿日誌去看蜘蛛實际訪問了什么,才發現大量請求落在無效路径上。

二、lastmod 失去參考價值

有些站点每次生成 sitemap 时,把全部地址的 lastmod 刷成同一個時間戳;有些則長期不更新,頁面改了好几轮,時間還停在最初。两種情况都會让這個字段失去意义。更稳妥的做法是:只有当頁面正文或主要内容确實發生實质變化时,才更新该地址的 lastmod,模板調整、广告位替換這類改動不必触發。

三、分片與索引文件無人维護

当站点規模變大,通常會按栏目或時間拆成多個子 sitemap,再用一個索引文件(sitemap index)把它們串起来。單個 sitemap 文件不宜超過 5 萬條地址、未压缩大小不宜超過 50MB。常见故障是:新增了子文件却忘了加進索引,或者某個子文件报错、返回 404,導致整批地址静默失效。

一套可以照着做的维護流程

  1. 導出並抽样校驗。把 sitemap 中的地址拉成列表,脚本批量請求,记錄狀態碼、跳轉鏈和目标地址、頁面上的 canonical 與 robots 指令。
  2. 過滤出四類異常。狀態碼非 200 的、跳轉到其他地址的、canonical 指向別處的、带 noindex 的——這些都應该從清單里移除或替換。
  3. 剔除參數與低價值地址。把带追踪參數、排序參數、重复内容特征的地址清理掉。
  4. 校正 lastmod。用内容系統的實际更新時間生成,而不是用生成脚本的執行時間。
  5. 检查索引文件。確認每個子文件都能訪問、都已登记、條數在限制之内。
  6. 在 robots.txt 中声明位置。確認声明的路径可訪問、没有被人為拦截。
  7. 重新提交並观察日誌。提交後過一段時間再看服務器日誌,確認蜘蛛訪問的地址分布是否更集中在你希望的位置。

這套流程不需要天天跑。規模不大的站点,每月一次即可;内容更新频繁的站点,可以每周抽一次,重点看新增和下线两部分。

和其它信号保持一致

sitemap 不是孤立文件。它應该和 robots.txt 的抓取規則、頁面上的 canonical 标簽、内鏈结构指向的方向保持一致。如果内鏈都指向 A 地址,canonical 也寫 A,sitemap 里却登记的是 B,蜘蛛收到的就是三份互相矛盾的信号。

清單整洁不等于一定被收錄,收錄與否取决于搜尋引擎自己的判断。你能做的是把门口的路修平,別让蜘蛛在無效地址上反复折返。

把 sitemap 当成一項需要定期检查的运营事項,而不是一次性的技術配置,它才能真正發挥“指路”的作用。