一条 URL 如果只写在 Sitemap 里,站内没有任何页面链接指向它,抓取系统对它的判断往往偏保守:搜索引擎不一定按 Sitemap 全量抓取,即便抓到了,之后的回访频率通常也低于有正常内链入口的页面。这类页面习惯上叫孤岛页面,问题不在 Sitemap 本身,而在于它缺少一条从首页出发、能被稳定走到的通路。
孤岛 URL 通常从哪里冒出来
孤岛不是一次性生成的,多数是站点迭代的副产品。常见来源包括:
- 改版或栏目下线,旧列表页被撤掉,但详情页仍然可以访问;
- 后台批量导入或程序生成的详情页,没有写回任何列表;
- 分页只放出前几页,深页只能靠参数翻到,正常链接层级里根本到不了;
- 卡片是 JS 渲染的,跳转靠 onclick 或前端路由,HTML 里没有可抓取的 a 标签;
- 只通过站内搜索框、筛选条件或提交表单才能进入的页面。
这些页面的共同点是一致的:它们能被访问,却不在任何一条稳定的链接路径上。
先核对哪些 URL 真的没有内链
判断孤岛不要凭印象,最稳的办法是做一次差集:一边是 Sitemap(或数据库)里的 URL 全集,一边是站内链接图里出现过的 URL。
- 导出 Sitemap 的分片 URL 列表,剔除已经是 301、404 的历史地址;
- 用站内爬取工具从首页出发,跟随 a 标签抓取,记录每个 URL 的发现来源;
- 两边取差集,得到候选孤岛;
- 按模板分组看结果,比如详情页、标签页、分页页分开统计,避免一条模板的异常掩盖整体情况。
核对时要留几个干扰项:被 nofollow 的链接、JS 跳转,以及指向了 canonical 不同地址的链接,都会让差集出现假阳性。对着候选列表抽查几条,看实际页面是否真的没有入口。
补链的几个常用入口
补链的目标不是把孤岛页硬塞到首页,而是给它一条或多条合理的通路。
- 栏目列表与分页末页:确认分页可被抓取,不要让「加载更多」成为唯一入口;
- 面包屑与层级导航:让详情页挂回所属分类,同时暴露上级结构;
- 相关推荐与上下篇:同主题页面互相指路,改善抓取路径也顺带改善站内动线;
- 标签页或专题聚合:适合零散、数量多的页面归拢;
- Sitemap:作为补充声明保留,不要当成唯一入口。
补链时容易踩的坑
一次性给几千条页面补内链,等于在短时间内改变整站的链接结构,抓取端收到的是一个突变信号,效果未必比逐步补来得稳。
- 不要把孤岛页全部堆进页脚或侧边栏全站输出,链接膨胀反而稀释价值;
- 锚文本写清目标页讲什么,比「点击这里」更利于判断;
- 列表页要能直接被抓到,需要交互才出现的链接对抓取不友好;
- 补链后保留原 URL,不要顺手改成新的参数形式,否则刚建立的通路又断了。
把它做成一次可重复的核对
孤岛问题会随模板更新反复出现,建议把差集做成固定动作:新模板上线时抽查它是否自带入口;每次批量导入数据后核对新增 URL 是否挂到了列表;每隔一段时间跑一次全站差集。重点看的是发现通路是否成立,而不是单个页面当下是否被抓,抓取结果本身有延迟,不必每天盯着看。