站点运营

站点运营:Sitemap 與索引提交自查,別让地址地图把蜘蛛引向無效頁

sitemap 是给蜘蛛指路的地图,但如果地图上混着失效地址、假 lastmod 和不该收錄的參數頁,抓取预算就會浪費在無效路径上。這篇文章從地址篩選、分段体积、lastmod 维護和提交驗證四個角度,整理一份可以照着做的自查清單。

站点运营

站点运营:Sitemap 與索引提交自查,別让地址地图把蜘蛛引向無效頁

Sitemap 常被当成一次生成、長期不管的静態文件。實际上它更像一份對外承诺的清單:你在告诉蜘蛛「這些地址值得来抓」。清單里混進失效地址、重复地址或者根本不该收錄的頁面,浪費的不只是带宽,還有整站被合理抓取的机會。

一、先確認地图里的地址都能打開、也都该收

生成逻辑往往直接讀資料库里所有文章,标题、狀態、權限一概不過滤。建议在生成环节加一道篩選,把下面這些類型剔出去:

  • 返回 301、302 的跳轉地址,應该寫最终地址而不是中間地址;
  • 已刪除或已下线的 404、410 頁面,尤其是内容下线後模板没同步的情况;
  • 被 robots.txt 的 Disallow 挡住的目錄,寫了也抓不到,只會制造矛盾信号;
  • 頁面上带 noindex 的地址,除非你确實希望它被看到但不想被收錄;
  • 带篩選參數、排序參數、會话參數的列表頁,這類地址容易成倍膨胀。

一個简單的判断标准:這個地址如果被蜘蛛抓走,你希望它看到什么?答不上来的,就不该出現在 sitemap 里。

二、lastmod 別寫成全站同一個時間

不少站点每次跑生成脚本,就把所有地址的 lastmod 刷成目前時間。短期看不出問题,時間一長,蜘蛛會逐渐降低對這個字段的信任度,等真的有新内容时,反而得不到優先抓取。

比較稳妥的做法是:只有正文、标题或關键结构發生實质變化时才更新,模板調整、广告位替換、頁脚年份自動更新這類改動不算。

lastmod 回答的問题是「哪些内容真的變了」,而不是「站点又跑了一遍生成脚本」。

三、分段與体积要提前規划

  • 單個 sitemap 文件的地址數建议控制在 50000 條以内,未压缩体积不超過 50MB;
  • 内容量較大的站点,用 sitemap index 按栏目或内容類型拆成多個子文件,便于單獨排查和單獨更新;
  • 新闻、图片、视频有各自的扩展格式,不要和普通頁面混在一個文件里;
  • 体积偏大时啟用 gzip 压缩,多數蜘蛛都支持。

拆分的另一個好處是定位問题更快:某個子文件的抓取異常,能直接對應到具体栏目,而不是在整個大文件里翻找。

四、哪些地址原則上不该進 sitemap

  • 站内搜尋结果頁,這類地址數量近乎無限;
  • 用戶中心、登入後頁面、表單提交後的结果頁;
  • 只做跳轉用的短地址和追踪參數地址;
  • 尚未通過自查的标簽頁與聚合頁,等確認有實质内容再考虑加入。

分頁後續頁是否需要收錄,取决于栏目本身的策略,但至少不要让每頁都带一串參數地址混進来。

五、提交之後怎么驗證

  1. 在 robots.txt 里用绝對地址声明 Sitemap 位置,方便蜘蛛自動發現;
  2. 到站長平台提交,观察抓取統計與覆盖率變化,而不是提交完就当結束;
  3. 翻訪問日誌,看蜘蛛對 sitemap 文件的抓取频次和返回碼,確認没有被限流或被 404;
  4. 把 sitemap 地址數與實际被抓取、被索引的數量做對比,差距大的部分單獨找原因;
  5. 随机抽样若干條地址,手動检查狀態碼、canonical 指向和頁面内容是否一致。

這套動作做下来,通常能發現几類反复出現的問题:老地址没清理、栏目改版後路径没同步、參數頁批量進入地图。每次改版或栏目調整後重跑一遍,比事後從日誌里反推要省力得多。

六、把它当成一份需要维護的清單

Sitemap 的價值不在于文件本身多大,而在于里面每一條都立得住。建议把生成逻辑寫進日常流程:内容上线、下线、改路径时自動同步,每月抽一次時間做人工抽查。地图画得准,蜘蛛走的路才會顺。