为什么 sitemap 在蜘蛛池里容易被忽略
很多蜘蛛池的搭建者把精力放在域名、IP、模板和跳转链路上,sitemap 往往是最后顺手加的一个文件,甚至根本没加。实际上,蜘蛛池的入口页通常数量多、结构相似、外链来源有限,如果只靠外链和蜘蛛自己顺着链接爬,新入口页被发现的时间会很不稳定。sitemap 的作用不是“让蜘蛛一定来”,而是给蜘蛛一个明确、低成本的候选清单:有哪些 URL 存在、什么时候更新过、大概多久变一次。
它解决的是发现问题,不是抓取和收录问题。把这两件事分开看,后面的配置思路就会清楚很多。
文件放哪里、要不要分片
位置与基本约束
- 单个 sitemap 文件的 URL 数量有上限(5 万条),超过就要拆成多个文件,再用 sitemap 索引文件串起来。
- 文件建议放在站点根目录,或通过 robots.txt 里的 Sitemap 指令声明完整地址,避免蜘蛛找不到。
- 只放返回 200 的 URL。会 301、302、404 的地址不要写进去,否则等于主动给蜘蛛制造无效抓取。
- 编码统一用 UTF-8,URL 中的特殊字符要转义,避免解析失败。
分片思路
分片不必花哨,按入口页的批次或目录分就行,例如按上线批次拆成 sitemap-01.xml、sitemap-02.xml。好处是某个批次出问题时,可以单独下线对应分片,而不影响其他入口页。分片数量不宜过多,几十个以内通常够用,太多反而增加蜘蛛的抓取负担。
sitemap 里该放哪些 URL
这是蜘蛛池里最容易写错的部分。常见的错误是:把入口页、中间页、目标页全部塞进同一个 sitemap。目标页通常不属于蜘蛛池的资产,把它写进来,等于把蜘蛛往别人的站点引,同时也暴露了自己的资源关系。
比较稳妥的做法是:
- 入口页:核心内容,全部写入。
- 中间页:只在确实需要被独立发现时才写,否则靠入口页的内链即可。
- 目标页:不写,靠入口页的出站链接引导。
- 参数页、分页、筛选页:除非有明确价值,一律不写,用 robots.txt 或 canonical 处理。
lastmod 与更新频率怎么填
lastmod 是 sitemap 里被滥用最多的字段。为了让蜘蛛多来,有人会把 lastmod 每次生成时都刷成当天,结果蜘蛛几次抓到的内容完全一样,之后对这个字段的信任度就会下降。
合理的做法:
- 只有页面内容真的发生变化时才更新 lastmod。
- 用统一的时区格式,精确到日期即可,不必精确到秒。
- 蜘蛛池入口页如果长期不改,就让 lastmod 停在那里,不要人为刷新。
- 不要填未来时间,这是最容易被识别为异常的信号之一。
主动提交入口怎么配合
sitemap 属于被动声明,主动提交是补充手段,两者配合使用会更稳:
- 站长平台的 sitemap 提交:可查看已提交、已抓取的进度,作为体检数据。
- URL 提交接口:适合新上线的少量重点入口页,不适合每天几十万条批量刷。
- 外链入口:给新入口页做一两个真实可达的外链,能让蜘蛛更快找到第一批 URL。
- 日志观察:看 sitemap 文件本身是否被抓、多久抓一次、抓完后是否顺着里面的 URL 继续爬。
常见问题排查
sitemap 被抓了,但里面的 URL 没动静
先看文件本身是否合规:能否正常访问、返回码是不是 200、XML 是否合法、有没有把大量 301 或 404 写进去。再看入口页的响应速度和服务端并发,如果蜘蛛取完 sitemap 后访问入口页超时,抓取自然就停了。
sitemap 根本没被抓
检查 robots.txt 是否误屏蔽、是否声明了 Sitemap 地址、CDN 或 WAF 是否把蜘蛛拦在文件之外。有些防护策略会把 .xml 后缀也当成敏感请求,需要在放行规则里单独处理。
和 robots.txt 的分工
robots.txt 决定“哪些不能抓”,sitemap 建议“哪些值得抓”。一个做减法,一个做加法,两者方向相反,但目标一致:让蜘蛛把有限的时间花在有价值的地方。
蜘蛛池的入口页数量大,如果 robots.txt 写得很宽松,sitemap 又写得很杂,蜘蛛会在大量低价值 URL 上消耗抓取预算。反过来,robots.txt 严、sitemap 精,蜘蛛的行为会集中很多。
落地建议清单
- 每个入口域名至少配一个可访问的 sitemap,或一份 sitemap 索引。
- 只写 200 状态的入口页,不写目标页和无效 URL。
- lastmod 如实填写,不刷新、不填未来时间。
- 按批次分片,方便单批下线与问题隔离。
- 在 robots.txt 中声明 sitemap 地址,并确认防护策略放行该文件。
- 定期用日志复盘 sitemap 的抓取频次和后续 URL 的抓取覆盖,作为调整依据。
sitemap 不会直接带来收录,也不保证排名,它只是把“发现”这一步做得更确定一点。在蜘蛛池这类入口页多、结构相似的场景里,把这件小事做扎实,往往比反复调整模板更能减少无效折腾。