搜索抓取

Sitemap 索引文件怎么组织:分片多了之后,蜘蛛还能顺着走吗

站点 URL 变多后,Sitemap 往往要拆成分片并加一个索引文件。本文从抓取路径的角度,说明索引与分片的分工、分片切分方式、robots 声明和日志验证方法,并列出分片地址失效、lastmod 不同步、URL 形态不统一等常见问题,帮助蜘蛛更顺地读到每一片。

搜索抓取

Sitemap 索引文件怎么组织:分片多了之后,蜘蛛还能顺着走吗

站点 URL 上万以后,单个 Sitemap 很快就塞不下了。这时通常会用分片文件加一个索引文件来组织。它看起来只是文件拆分,实际上会影响蜘蛛顺着入口找到分片、再从分片读到具体 URL 的路径。分得好,蜘蛛少绕路;分得乱,入口在,后面的路却断断续续。

索引文件和分片各管什么

Sitemap 索引文件本身不直接列页面 URL,它只列分片文件的位置和最后修改时间。蜘蛛先读索引,再按里面的地址去请求分片,最后从分片里拿到 URL。这个层级要保持简单,索引指向分片就够了,不要再做多层索引套索引,否则蜘蛛每多一跳都要多花一次请求。

  • 单个 Sitemap 文件建议不超过 50,000 个 URL,未压缩体积不超过 50MB。
  • 索引文件同样有数量和体积上限,通常也是 50,000 条和 50MB。
  • 分片和索引都应返回正常的 200 状态,内容类型为 XML。
  • 索引里的 lastmod 要跟分片实际更新时间对得上,不要随手写。

分片按什么维度切更顺

分片不是越细越好。常见做法是按栏目、页面类型或更新时间切分。比如商品详情一个分片、文章一个分片、专题聚合一个分片。这样蜘蛛抓取时,分片内部的 URL 主题接近,抓取节奏也更容易稳定。如果按时间切,注意别让旧分片长期不更新却反复出现在索引里,蜘蛛每次来都读一遍没有变化的文件,也是无谓消耗。

  • 每个分片只放规范化后的绝对 URL,统一协议、域名、大小写和结尾斜杠。
  • 同一个 URL 不要出现在多个分片里,减少蜘蛛重复判断。
  • 分片内 URL 数量不要顶到上限,留一点余量方便后续追加。
  • 分片文件名保持稳定,避免频繁改路径,让已发现的旧分片变成死链。

入口怎么给,蜘蛛才知道去哪读

索引文件生成后,需要在 robots.txt 里声明它的地址,也可以同时提交给搜索引擎的站长平台。robots.txt 里写 Sitemap 时用完整绝对地址,不要写相对路径。如果站点有多个子域或移动站,每个可抓取的主机最好都有自己的 Sitemap 入口,别把不同主机的 URL 混进同一个分片。

声明之后,还要看日志确认蜘蛛确实来读了索引和分片,而不是只访问了索引文件就离开。若索引正常但分片长期没有请求,优先检查分片地址是否被 robots 规则挡住、是否返回了 404 或 403,以及索引里的地址有没有写错。

几个容易让路径断掉的细节

  • 分片里混入重定向 URL 或已删除页面,蜘蛛跟着跳几次后可能降低对该分片的信任。
  • 索引文件指向一个不存在的分片,或分片被防火墙拦截,都会让后续抓取路径中断。
  • 分片更新后,索引里的 lastmod 没有同步,蜘蛛可能按旧时间判断,减少回访。
  • URL 参数顺序、大小写、http 与 https 混用,会让同一页面被拆到不同分片里。
  • 用 gzip 压缩分片可以节省带宽,但要确保服务器返回正确的 Content-Encoding。
Sitemap 是给蜘蛛递线索,不是收录保证。索引和分片组织得再整齐,页面本身如果内容单薄、内链孤立,抓取路径仍然走不深。

最后回到站点运营的视角:Sitemap 索引与分片是一套需要长期维护的基础设施。每次栏目调整、URL 规则变更、域名迁移,都要同步检查索引里的分片地址是否还有效。定期从服务器日志里看蜘蛛读了哪些分片、哪些分片一直冷着,比反复提交入口更有用。