Sitemap 和站内链接是搜索蜘蛛发现 URL 的两条主要通道。很多站点在排查抓取问题时,习惯只看其中一条:要么盯着 Sitemap 提交量,要么只看内链是否通畅。实际上一旦两条通道对不上,就会出现两类缺口——Sitemap 里写了但没有任何入口指向的页面,以及页面明明能被用户点到、却始终不在 Sitemap 里的地址。这两类问题都不会立刻报错,但会长期消耗抓取资源。
为什么两份清单会对不上
最常见的原因是维护节奏不同。Sitemap 通常由程序按规则批量生成,而内链由编辑、模板、栏目配置共同决定,两者的更新周期、数据来源都不一样。其次是判断口径不同:Sitemap 生成脚本往往按“数据库里有这条记录”就输出,而内链是否出现取决于该页面是否被某个列表页选中、是否通过审核、是否在有效期内。口径不一致,清单自然分叉。
常见的不一致类型
Sitemap 有、内链没有
这类 URL 通常只能靠 Sitemap 被单独发现。如果蜘蛛对该路径的抓取频率不高,这些页面可能长期处于“已提交未抓取”状态。典型场景是历史内容、活动落地页、需要登录或满足条件才展示的页面。可以先用日志确认这些地址是否真的被访问过,再决定是补入口还是从 Sitemap 里移除。
内链有、Sitemap 没有
这类地址至少能被爬取路径发现,风险相对小,但如果数量庞大(比如筛选、排序、分页产生的组合),会让抓取集中在低价值页面上。处理方式不是简单“全部塞进 Sitemap”,而是先判断哪些值得长期保留,再决定是收敛参数还是补充提交。
两边都有、却被规则挡住
还有一种隐蔽情况:地址同时出现在 Sitemap 和内链中,但被 robots.txt 屏蔽、被 meta noindex 标记,或依赖重定向才能到达最终页。此时入口是通的,可抓取结果不是预期页面,等于白走一趟。这类问题要结合状态码和 robots 规则一起看。
盘点方法
- 导出当前 Sitemap 的全部 URL,作为清单 A。
- 用站内爬取或抓取统计工具,导出从首页出发可达的 URL,作为清单 B。
- 取差集:A−B 是只靠 Sitemap 的地址,B−A 是只靠内链的地址。
- 抽取日志,核对两类地址的实际抓取次数与返回状态。
- 按栏目、模板类型归类,找出是规则问题还是内容问题。
处理顺序建议
- 先修规则冲突:robots、noindex、重定向的问题不解决,补入口也没意义。
- 再补高价值缺口:优先给有内容、有搜索需求的页面补内链,而不是一次性把差集全部塞进 Sitemap。
- 后收敛低价值入口:对参数组合、空列表、重复排序页做合并或屏蔽。
- 最后统一生成规则:让 Sitemap 的收录口径与内链展示逻辑尽量同源,减少后续再次分叉。
验证与观察
调整之后不要只看一天的日志。建议按周观察两类地址的抓取次数变化、返回状态分布,以及新页面从发布到首次被抓取的间隔。如果差集在缩小、无效抓取在下降,说明方向是对的。需要提醒的是,入口对齐只能提高被发现和被抓取的概率,并不能保证收录或排名。
把 Sitemap 和内链当成同一份入口清单的两个视图来维护,比分别优化更省事,也更接近抓取的真实情况。
如果站点栏目多、模板杂,可以先挑一个栏目做完整对照,跑通流程后再推广到全站。这样既有可对比的样本,也不会因为一次性改动过大而看不清效果。