很多站点整理 URL 清單时,會撞上一個尴尬的現象:某些頁面在 Sitemap 里明明寫着,服務器日誌里却几乎看不到蜘蛛来訪。它們既没被 robots.txt 挡住,也没有返回错誤碼,只是站内没有任何一個可抓取頁面鏈過去——也就是常说的“孤岛頁面”。
孤岛頁面是怎么出現的
孤岛頁很少是故意造成的,多數来自日常操作:
- 专题或活動頁做完之後,入口從首頁撤下,頁面本身還挂着;
- 程序批量生成的分頁、篩選结果頁,没有上級列表連結;
- 舊路径迁到新路径,舊内鏈删了,新頁面没接回去;
- 只在 sitemap.xml、站内搜尋或後台文章列表里能看到,前台没有可達路径。
從爬虫的视角看,站点结构是被連結“连”出来的。没有入鏈,就等于没有路。
Sitemap 是线索,不是入场券
把 URL 寫進 Sitemap,作用主要是告诉搜尋引擎“這里有一份地址清單”。它解决的是“知不知道”的問题,不解决“值不值得抓、抓了怎么理解”的問题。蜘蛛拿到清單之後仍要排抓取队列,參考站点整体质量、歷史抓取反馈、頁面更新频率等因素。一個既有站内入鏈、又被外部引用的頁面,和一個只在 Sitemap 里出現過一次的頁面,被安排的優先級通常不在一個量級上。
Sitemap 更像地图上的标记点;能不能走過去,取决于路上有没有桥。
给孤岛頁接一條路
想让這類頁面被稳定發現,思路是把它們放回站内结构里,而不是反复提交地址清單。
- 找到最近的同類聚合頁。文章归栏目、商品归分類、活動頁归专题,優先出現在语义相關的列表里。
- 連結位置比連結數量重要。一處正文内的上下文連結,通常比頁脚几十條通用連結更能帮蜘蛛判断相關性。
- 控制入口數量。不要把同一批頁面在首頁、侧栏、頁脚全部铺開,這會把抓取预算摊薄。
- 保持路径稳定。接好内鏈後不要频繁改位置,蜘蛛需要几轮抓取才能重新梳理结构。
怎么確認一個頁面是不是孤岛
- 用站内連結检查工具或爬取工具,看有多少可達頁面指向它;
- 翻服務器日誌,看它最近一次被訪問的時間與来源路径;
- 確認它是否只出現在 Sitemap、後台列表或站内搜尋结果里;
- 检查是否有 nofollow、robots meta,或連結依赖脚本渲染而實际不可见。
需要分清的是,這里讨论的是“能不能被發現”,不是“會不會被收錄”。抓取、索引、排名是三件事,修好内鏈只解决第一环,後面還要看内容本身是否值得留下。
小站和大站的差別
小站頁面少,孤岛頁往往一两轮抓取就被顺带發現;大站頁面多,抓取预算被摊得很薄,孤岛頁可能長期停在清單里。所以大站更该定期做連結盘点,把入口集中到真正重要的頁面上,對不再维護的孤岛頁明确態度——要么接回结构,要么用 301、noindex 做出取舍。
把孤岛問题当成一次结构清理的契机,通常比反复提交地址清單更有效:蜘蛛看见的,始终是連結搭出来的那座站。