做蜘蛛池的时候,大多数精力会花在入口页上——选域名、铺链接、看日志。相比之下,站点地图(sitemap)往往被当成顺手交一下的东西。实际上在 URL 发现这个环节,sitemap 是少数几条能被搜索引擎直接读取的通道之一,用好了能省下不少入口页的铺垫成本,用错了也会给整站带来负面信号。
sitemap 在蜘蛛池里到底起什么作用
需要先摆正预期:sitemap 是URL 发现的一条线索,不是抓取或收录的保证。搜索引擎读到它,只说明这些 URL 进入了待处理队列,后续会不会抓、抓几次、给多少权重,仍然取决于入口页本身的状态和站点整体质量。
它和入口页互链的分工也不一样。互链解决的是“蜘蛛爬到 A 页之后还能不能走到 B 页”,属于路径问题;sitemap 解决的是“我主动告诉它还有哪些 URL 存在”,属于告知问题。两者是互补的,不是替代关系。入口页铺得好,sitemap 能加快覆盖;入口页本身有问题,sitemap 也救不回来。
提交范围:只放你希望被发现的那部分
最容易被忽略的一点是范围控制。sitemap 不是站点全量清单,尤其是蜘蛛池这种场景,很多时候你希望被发现的只是入口页和少量过渡页。
- 只提交入口页与必要的承接页。把后台、站内搜索结果页、带一堆参数的筛选页塞进去,只会稀释抓取预算。
- 别提交状态不稳定的 URL。还在调整中的页面、返回 404 或 410 的页面、临时跳转的地址,先清理掉再提交。
- 多域名、多子域要分开提交。每个域名管自己的 sitemap,混在一个文件里既不好排查,也容易遗漏。
- 注意单文件条数与分片。URL 数量多的时候用 sitemap 索引文件来管理,分片不要频繁改名。
更新节奏与 lastmod
lastmod 这个字段的实际影响常被高估,但写错会实实在在伤到信任。比较稳妥的做法是让 lastmod 反映真实的最后修改时间,而不是每次生成 sitemap 就把所有时间刷成当下——这种“全站天天更新”的信号很容易被发现并忽略。
sitemap 的更新频率也不必和入口页改动绑死。入口页内容没实质变化时,sitemap 保持原样即可;真正需要更新的是URL 集合发生变化的时候:新增入口页、下线旧页面、路径调整。
一个实用的判断标准:这次 sitemap 改动,是否改变了“有哪些 URL 需要被发现”这个问题的答案?如果答案不变,就没必要动它。
常见的几类错误
- robots.txt 里屏蔽了 sitemap 中列出的路径,自己给自己制造矛盾。
- robots.txt 没有声明 sitemap 的位置,导致文件躺在服务器上没人读。
- 把大量带参数、大小写混乱、内容重复的 URL 写进 sitemap,等于主动制造镜像页。
- 文件编码或压缩格式出错,解析失败后长期无人察觉。
- 频繁全量替换整个 sitemap 内容,让抓取端反复重新解析。
- 入口页已经停用,sitemap 里还留着大批死链。
和入口页的分工怎么落地
比较省事的做法是:sitemap 负责广度,入口页负责深度。sitemap 把入口页清单一次性交代清楚,入口页内部再用互链把蜘蛛引向真正需要被抓取的内容。两者不要在职责上互相打补丁——入口页没铺好就靠 sitemap 猛加量,或者 sitemap 里堆一堆互链本来就能到达的 URL,都是在浪费资源。
观察与调整
调整的依据还是访问日志。可以留意几个信号:sitemap 文件本身有没有被定期读取,读取之后入口页的抓取是否出现变化,新增的 URL 大概多久会出现在抓取记录里。这些都不构成一定有效的证据,但可以帮你判断当前这套配合方式是不是在正常运转。
如果一段时间内 sitemap 被读取,但入口页抓取毫无变化,问题大概率不在 sitemap,而在入口页本身的可抓取性、内容质量或域名状态上。这时候该回头检查入口页,而不是继续调整 sitemap 的写法。