不少人把 sitemap 当成收錄開關:文件生成好、提交上去,就等着收錄量往上涨。實际上 sitemap 只解决一件事——让搜尋引擎知道站点上存在哪些 URL。至于會不會来抓、抓了之後會不會進索引,中間還隔着两道關。所以核對的顺序應该是三段:文件有没有被讀到、清單里的 URL 有没有被實际抓取、抓到的内容有没有進入索引。跳過前两段直接盯收錄量,很容易得出错誤结论。
一、先理清 sitemap 的职责邊界
把 sitemap 想成一個目錄递交動作會更准确。它能做的事和不能做的事,最好分開看:
- 能做的:把一批 URL 集中告知爬虫,尤其是内鏈层級較深、不容易被自然發現的頁面;
- 能做的:携带 lastmod 等信号,帮助判断哪些頁面最近改動過;
- 做不到的:保證抓取频次,也不能决定頁面是否進入索引;
- 做不到的:弥补頁面本身的质量問题,比如内容過薄、與已有頁面高度重复。
換句话说,sitemap 影响的是“發現”环节。發現之後的判断,仍然由爬虫和索引系統獨立完成。
二、確認 sitemap 本身有没有被讀到
收錄没動静时,第一步不是改 sitemap 内容,而是確認這份文件有没有被正常訪問。可以在服務器日誌里按 sitemap 路径检索,看請求是否来自真實爬虫、返回狀態是否為 200。常见的几類低級問题值得先排掉:
- 訪問異常。文件被規則拦截、返回 403 或跳轉到登入頁,爬虫看到的是一個空结果。
- 体积與條數超限。單個文件通常有條數和未压缩体积上限,超出部分需要拆成多個子文件並用索引文件串起来。
- 子文件不可抓。用了 sitemap index 但子文件路径寫错、被 robots.txt 屏蔽,索引文件被讀了,子文件却一個都没進。
- 入口没寫全。robots.txt 里没有 Sitemap 行,或提交後台里填的是舊路径,两處都可能造成“以為提交了,其實没提交”。
這一步的判断依據是日誌,而不是後台的提交狀態提示。後台顯示成功,只代表文件被接收,不代表内容被逐一處理。
三、把清單里的 URL 分成三档
sitemap 里的 URL 不该是“全站導出”,而應该是一次有取舍的挑選。按意图分三档,核對起来會清晰很多。
第一档:明确希望被收錄的頁面
詳情頁、核心栏目頁、有獨立检索價值的专题頁属于這一档。它們應该满足几個前提:URL 稳定、返回 200、正文主体完整、可以被未登入狀態訪問。任何一條不满足,就先修頁面,而不是反复重新提交。
第二档:可收錄可不收錄的頁面
分頁、标簽聚合、篩選结果、归档頁大多落在這里。放不放進去取决于站点策略,但至少要保證同一批頁面只以一種形態出現。如果分頁既在 sitemap 里、又能通過參數组合出無穷變体,爬虫會把预算花在重复路径上。
第三档:不该出現在 sitemap 里的頁面
這類頁面放進 sitemap 會直接拉低整份清單的可信度:
- 已经設定 noindex 的頁面,指令之間互相矛盾;
- 跳轉到其他地址的 URL,最终落地頁才是需要被發現的;
- 返回 404 或 410 的歷史地址;
- 需要登入、加购或提交表單後才能看到正文的頁面。
核對时可以做一個简單動作:把 sitemap 里的 URL 與實际可訪問、可索引的 URL 做一次差集。差集越小,這份清單的“有效提交率”越高。
四、lastmod 不要随手寫
lastmod 是 sitemap 里少數能被直接利用的信号之一,但它只在准确时才有價值。几種常见寫法會影响判断:
- 每次生成 sitemap 就把全站 lastmod 刷成当天,爬虫很快會学會忽略這個字段;
- 所有頁面寫同一個固定日期,等于没有提供信息;
- 时区格式不统一,解析结果和實际改動時間差出一截。
更稳妥的做法是让 lastmod 跟随正文的實际改動時間,只有内容發生變化时才更新。模板調整、样式微調、广告位替換這類不影响正文主体的改動,不必触發 lastmod 變更——這一点和“索引里還是舊版本”的核對逻辑是相通的。
五、提交之後的核對节奏
三段核對對應三個不同的观察窗口,最好不要混在一起看:
- 前一周看抓取。日誌里出現對新增 URL 的請求,說明發現的环节通了。此时收錄没變化是正常的。
- 第二到四周看索引。被反复抓取但仍不進索引的頁面,問题通常在内容质量、重复度或站点整体信任度上,而不是 sitemap 格式。
- 長期看一致性。定期比對 sitemap 與线上真實 URL,删掉失效條目、补上新增核心頁面,避免清單越滚越大却越来越不准。
一個實用的判断:如果日誌里连抓取請求都没有,問题在發現环节;如果抓了多次仍不進索引,問题在頁面與站点层面。两者用的排查方法完全不同,混着改只會互相干扰。
把 sitemap 放回它本来的位置——它是一份递给爬虫的候選清單,负责降低發現成本,不负责收錄结果。按發現、抓取、入库三段分開核對,才能看清問题真正卡在哪一步。