入口页铺出去,只是把门打开。蜘蛛会不会走到某一扇门前,取决于它自己的调度,也取决于你有没有把路径说清楚。sitemap 和主动提交就属于这一层:它们不负责让页面被收录,只负责让 URL 更容易进入蜘蛛的待抓队列。把这两件事和「收录保证」分开看,很多决策会清爽很多。
入口页为什么还要配 sitemap
入口页通常没有外部链接支撑,蜘蛛靠自然爬行发现它们的概率并不稳定。sitemap 的价值在于:你主动列出一批 URL,蜘蛛不用靠链子一层层摸过去,就能直接拿到清单。对数量多、层级浅、彼此之间链接稀疏的入口页来说,这一步往往比再铺一层内链更直接。
与 robots.txt 的配合
一般建议在 robots.txt 里用 Sitemap 指令指向 sitemap 的完整地址,有多份就逐条列出。需要注意的是:如果某个目录在 robots.txt 里被禁止抓取,sitemap 里就不要再放这个目录下的 URL。两处规则冲突时,蜘蛛通常会以 robots.txt 的禁止为准,写了也是白写,还可能让整份 sitemap 的可信度下降。
sitemap 里该放什么、不该放什么
- 只放返回 200 的入口页。301 跳转的、404 的、需要登录的,都不要放。
- 放最终 URL,不要放会二次跳转的中间地址,省得蜘蛛多走一步。
- lastmod 只在页面内容真的变动时更新。每次生成都刷新时间戳,等于把这个字段作废。
- 参数重复页、分页很深的列表页、内容为空的模板页,尽量不放进清单。
数量与分片
单份 sitemap 建议控制在 5 万条以内、未压缩体积 50MB 以内,超出的部分拆成多份,再用一个 sitemap index 汇总。分片不是越多越好,常见做法是按入口页的类型或上线批次拆,比如一批新上的资源单独一份,方便观察效果。压缩成 gz 通常也被接受,能省不少带宽。
主动提交与推送接口能帮上多少忙
主流搜索引擎都提供了 sitemap 提交入口和 URL 推送接口。它们的作用是加快「被发现」的速度,但不承诺抓取,更不承诺收录。推送之后蜘蛛没来,属于正常范围,不必立刻怀疑接口坏了。
- 推送接口通常有配额限制,每天能推的量有限,优先推新上线或刚改过的入口页。
- 推送前先自己确认这个 URL 返回 200、能正常渲染,别把出错页推上去。
- 同一批 URL 不要反复推。重复推送消耗配额,也不会提高优先级。
- 推送记录留下来,和抓取日志对照着看,比单看推送成功数有用得多。
几个常见的误区
- 把 sitemap 当成收录保证。它只是发现通道,索引与否还是看页面本身。
- 在 sitemap 里塞几千条同模板页面,蜘蛛点开几个发现内容雷同,后面的就不太上心了。
- 用提交接口狂推,以为量变能带来质变,结果配额用光,真正重要的新页反而没推上去。
- sitemap 里的 URL 大面积 404 或跳转,长期下来蜘蛛对这份清单的信任度会降低。
一个可执行的落地顺序
- 先确认入口页本身状态正常:状态码、渲染、内容基本完整。
- 生成 sitemap,按批次分片,只收状态正常的最终 URL。
- 在 robots.txt 里声明 sitemap 地址,并检查与禁止规则是否冲突。
- 提交 sitemap,再对少量重点入口页走主动推送。
- 过几天对照抓取日志,看蜘蛛有没有按清单走,再决定是否补链或加量。
把 sitemap 和主动提交当成「告诉蜘蛛路在哪」,而不是「要求蜘蛛必须来」。通道修好之后,真正决定结果的还是入口页自身的质量和数量节奏。