很多站長會把 sitemap 当成“加速收錄”的開關:在蜘蛛池入口頁挂一份 sitemap,把目标 URL 全部寫進去,然後等搜尋蜘蛛来抓。實际跑下来常常發現,URL 确實被發現了,抓取却迟迟不来。要理解這個落差,需要先看清 sitemap 在整條發現鏈路里的位置。
sitemap 解决的是“發現”,不是“排期”
搜尋蜘蛛获取新 URL 的路径大致有几條:頁面上的 a 标簽連結、sitemap、外部連結、站長平台的手動提交。sitemap 的定位是批量告知,它本身不是連結,不传递權重,也不构成優先抓取的凭證。
所以“入口頁 + sitemap”的组合,本质上是多開了一條告知通道,而不是拿到了插队的资格。搜尋蜘蛛讀完 sitemap,會把這些 URL 放進待抓取队列;什么时候抓、抓几次,仍然取决于目标 URL 所在站点的整体情况,比如歷史响應速度、内容质量、是否存在大量重复頁面。
搜尋蜘蛛讀取 sitemap 时會關注哪些点
- sitemap 本身能否正常返回 200,Content-Type 是否為 XML
- 里面的 URL 是否可訪問,是否返回 200 而不是 404 或跳轉鏈
- URL 是否與目标站 robots.txt 的規則冲突
- sitemap 的位置是否被声明:robots.txt 里的 Sitemap 行、入口頁上的連結、站長平台提交
- lastmod 是否真實合理,長期不更新的時間戳參考價值會下降
其中最容易被忽略的一点是:sitemap 里有 URL,但入口頁上没有任何指向它的可点击連結。這種情况下 URL 會被记錄,但缺少頁面級的連結支撑,抓取優先級通常排在後面。
和頁面連結相比,差別在哪
頁面連結是“甲指向乙”的關系,除了發現 URL,還带着一点上下文信息;sitemap 只是一份清單。對搜尋蜘蛛来说,一個既出現在入口頁連結里、又出現在 sitemap 里的 URL,可信度通常高于只在 sitemap 里出現的 URL。
如果目标 URL 分散在多個站点,建议每個站点各自维護自己的 sitemap,而不是把所有域名混在一份文件里。單個 sitemap 有文件大小和條目數量的上限,超過之後需要拆分並用索引文件串起来,否則可能出現讀取不全的情况。
sitemap 提高的是被發現的概率,不是被收錄的概率。發現之後還有抓取、解析、去重、质量判断几道關。
提交之後仍没抓取,常见的原因
- 目标 URL 所在站点整体抓取频次本来就低,待抓队列排得很長。
- URL 返回 3xx 跳轉鏈或 4xx,被反复回退。
- 目标頁内容與站内已有頁面高度重复,被折叠處理。
- 入口頁本身抓取異常,搜尋蜘蛛根本没有讀到 sitemap。
- 服務器對搜尋蜘蛛响應過慢,触發限速或降频。
排查时可以先看服務端日誌:搜尋蜘蛛有没有真的請求過 sitemap 這個路径,响應碼和响應時間是多少。日誌里连 sitemap 的請求都没有,問题多半在入口頁的抓取环节;日誌里 sitemap 被抓了、URL 却没動静,方向就要轉到目标站本身。
可以落地的几個調整
- 入口頁上给 sitemap 里的重点 URL 补上正常連結,让清單和連結互相印證。
- sitemap 只放返回 200 的規范 URL,去掉跳轉版本、參數版本和已下线頁面。
- 控制單份 sitemap 的條目規模,必要时拆成多個並用索引文件串联。
- lastmod 随内容真實變化更新,不要每次生成都刷新時間。
- 观察一段時間後,按日誌里被抓取的 URL 比例調整清單内容,而不是一味加量。
把 sitemap 当成“告知工具”而不是“提速工具”,预期會更接近實际。它能让搜尋蜘蛛更容易知道某個 URL 存在,剩下的事情,還是要靠目标站自身的响應质量和内容来推動。