站点里总有一些 URL,页面质量不差,日志里也能看到被抓取过几次,但入口只有站外的零星引用或者一份 Sitemap 记录。这类没有被站内任何页面链接指向的 URL,通常被称为孤岛页面。它们不是打不开,而是蜘蛛缺少一条稳定、可重复走到的路径。
孤岛页面是怎么出现的
多数孤岛不是故意造出来的,而是站点演进中留下的副产品:
- 栏目改版时旧内链被删掉,页面本体却还保留着。
- 筛选、排序、分页等参数组合生成的 URL,只存在于用户的操作路径里。
- 批量导入商品或文章时只写进了数据库和 Sitemap,没有分配导航入口。
- 活动页下线后只撤了入口,页面本身没做任何处理。
- 父子栏目结构调整,子页面的链接没跟着迁移。
它们的共同特征是:页面可达,但入口不可重复。蜘蛛这一次可能靠外链或 Sitemap 走进来,下一次未必还能走到。
先把孤岛找出来
靠感觉判断容易漏。比较稳妥的做法是用集合求差:
- 导出一份站内内链可达的 URL 集合,方式是从首页出发爬一遍,或用站内爬虫工具跑一遍。
- 分别导出 Sitemap 中的 URL 集合,以及日志里近 30 天有抓取记录的 URL 集合。
- 用 Sitemap 集合或日志集合减去内链可达集合,差集就是候选孤岛。
- 再排除 robots.txt 屏蔽、功能性页面和必须保留的参数页,剩下的才需要处理。
如果站点规模不大,直接从日志里找「有抓取、看不出入口」的 URL 也够用。
Sitemap 可以是桥,但不是长期方案
Sitemap 能告诉蜘蛛“这个 URL 存在”,却很难告诉蜘蛛“这个 URL 在站点里处于什么位置”。缺少内链的页面,往往也缺少上下文和权重传递。
把 URL 塞进 Sitemap 之后确实更容易被发现,很多站点因此长期依赖这一条路径。问题在于 Sitemap 只解决发现问题,不解决页面之间的关系。当站点变大、Sitemap 分片增多以后,只有 Sitemap 入口的页面,抓取优先级通常排在靠后的位置。
把孤岛接回主路径
处理方式要按页面价值分档,并不是所有孤岛都值得保留。
值得保留的页面
- 从最相关的父级栏目或聚合页加一条内链,位置放在正文或列表区,而不是页脚堆砌。
- 如果是成批的相似页面,比如型号页、地区页,先建一个索引页统一收口,再由索引页链向明细页。
- 跨栏目做两三条上下文相关的互链,通常比在页面底部加一堆“相关阅读”更有效。
不值得保留的页面
- 内容重复、由参数生成的变体,用 canonical 或 robots 规则处理,避免继续分散抓取。
- 已下线的活动页、失效商品页,301 到最接近的替代页,或返回 410 明确告知已删除。
- 空壳页、占位页直接删掉,不要留着让它被反复尝试抓取。
以后怎么少产生孤岛
- 新增内容时同步确认入口,把“是否存在内链入口”写进发布检查清单。
- 下线页面时顺序反过来:先撤内链,再决定 301、410 还是保留。
- 改版迁移时把旧路径的入口关系一并梳理,不要只改链接地址。
- 每隔一段时间跑一次内链可达性巡检,把新增的孤岛记录下来。
孤岛页面的问题很难一次修完,它更像一条需要持续维护的线:只要站点还在改版、上架、下线,就还会有页面掉出主路径。定期检查内链可达性,比事后翻日志反复猜测要省力得多。