经常有人问:新页面到底是靠 Sitemap 让蜘蛛发现,还是靠内链?答案不是二选一。两者交给蜘蛛的东西本来就不一样,配合不好才会互相拖后腿。
Sitemap 是候选清单,不是抓取排期
Sitemap 的作用是告诉蜘蛛这里存在一个 URL,它解决的是发现问题,不解决值不值得现在抓。蜘蛛读到清单后,通常只是把这些地址放进待抓队列,真正什么时候抓,还要看队列里其他 URL 的优先级、站点历史抓取表现和服务器响应情况。
所以把 Sitemap 塞得越满越好是个误区。清单里混进大量 404、跳转、参数重复的地址,等于给队列加噪声,蜘蛛在这些低价值 URL 上花掉的时间,本来可以用在真正的新内容上。
内链提供的是上下文和重要性
内链和 Sitemap 最大的区别在于,链接是长在页面里的。蜘蛛顺着链接走的时候,同时拿到几个额外信息:来源页面的主题、链接在页面里的位置(导航、正文还是页脚)、锚文本,以及这个地址被多少其他页面指向。
这些信号会影响 URL 进入队列后的优先级。一个只出现在 Sitemap、站内任何页面都不提的地址,和一个在导航里就能点到的地址,抓取节奏通常差别明显。
两条通道打架时的常见情况
- 内链指向 A 版本,Sitemap 里写的是 B 版本(带参数或旧路径),蜘蛛看到两份互相矛盾的清单。
- Sitemap 已经更新,页面上的链接还是旧的,蜘蛛先从内链走到旧地址,再被跳转一次,白白多花一次请求。
- 内链把页面藏在很深的层级,Sitemap 却把它排在最前,结果是清单触发了一次抓取,之后长期没有第二次。
比较省事的对齐方式
- Sitemap 只放规范 URL:能返回 200、可索引、不需要登录的地址,跳转和重复版本剔出去。
- 重要页面至少要有站内可点击入口,避免出现只有 Sitemap 知道它存在的页面。
- 清单可以按内容类型或更新时间分片,lastmod 尽量反映真实改动,不要每次生成都刷新一遍。
- 页面上的链接和 Sitemap 指向同一个规范地址,两条通道说同一件事,蜘蛛就不用做判断。
用日志粗略判断哪条通道在起作用
翻服务器日志时,可以按来源做个粗分:没有站内 Referer、直接请求页面地址的,多半来自 Sitemap 或外部提交;带着站内 Referer 的,是顺着内链走过来的。观察一段时间,就能看出某个栏目主要靠哪条通道被发现。如果某个板块的抓取几乎全部来自 Sitemap,说明它在站内的入口太弱,值得补几个正文链接。
别忘了服务器这一层
无论 URL 从哪条通道被发现,最后都要落地成一次真实的 HTTP 请求。如果这段时间服务器持续返回 5xx,或者响应时间很长,蜘蛛会主动降低抓取频率,这时候 Sitemap 排得再靠前也起不到作用。抓取量下滑时,先看状态码和响应时间,再回头检查清单和内链结构。
一句话总结:Sitemap 负责让蜘蛛知道有这个地址,内链负责让蜘蛛觉得这个地址值得抓,服务器负责让蜘蛛真的抓得到。三者缺一环,另外两环的努力都会打折。