先弄清“入口”到底有多少种
URL 发现不是某一个开关,而是站内所有可被跟随的链接叠加出来的结果。做盘点时,先把入口类型写全,再谈优化,否则很容易只盯着 Sitemap,而忽略了别的通道。
- 全局导航与页脚链接:覆盖一级、二级栏目,是搜索蜘蛛进入站内主要区域的主干。
- 面包屑:为末级页面提供一条回到上层的稳定路径。
- 正文内链:相关性最高的一条路,也是深层页面被发现的常见来源。
- 列表页与翻页:决定历史内容还能不能被反复访问。
- Sitemap:补充那些内链层级太深、或只在特定条件下出现的 URL。
- 站外链接、RSS、结构化数据中的链接:属于外部入口,量不大但方向明确。
一次可执行的盘点顺序
盘点不必复杂,按下面三步走一遍,基本能看清站点当前的发现能力。
- 列入口:从首页出发逐层打开页面,把每个指向内页的链接来源记下来,标注它出现在哪个模块。
- 核对可达性:对每个入口做一次模拟抓取,确认返回状态码、是否被 robots 屏蔽、链接是否带 nofollow、是否需要登录或特定地区才可见。
- 核对渲染方式:关掉脚本或直接看首屏源码,确认链接是否真实存在于 HTML 中。只靠脚本插入的链接,能不能被跟随并不由你决定。
最容易出现断点的几个位置
- 翻页依赖按钮点击,页码地址无法直接请求。
- 列表页只渲染前若干条,后续内容要靠接口加载。
- 导航里混入了带跟踪参数的地址,同一个页面产生多个入口。
- 末级页面数量不少,但内部链接都指向少数几个热门页。
- Sitemap 声明了地址,文件本身却延迟加载或返回错误。
这些问题单独看都不严重,叠加起来就会出现“页面明明存在,却没有被抓取记录”的情况。
用日志反向验证
入口清单是推测,服务器日志是结果。把一段时间内的抓取记录按目录归类,看哪些目录几乎没出现,再回到入口清单里找原因,往往比反复猜测更直接。注意区分“没有来访”和“来访但被拒绝”:前者多是入口问题,后者多半是状态码或屏蔽规则的问题。
不同规模的站点,重点不一样
内容量在几千页以内的站点,通常靠导航、面包屑和正文内链就能把 URL 铺开,Sitemap 只做兜底。内容量到几十万页时,单靠内链很难覆盖,需要靠分类列表、标签聚合和分片 Sitemap 分担,同时控制列表页的翻页深度,避免搜索蜘蛛在无限翻页里消耗时间。数据量再大,就要考虑哪些内容根本不需要被发现,先做减法。
入口之外:稳定响应对发现的影响
入口做得再全,如果服务器在蜘蛛来访时频繁超时或返回 5xx,抓取节奏也会被打乱。核对入口的同时,顺手看一眼响应时间与错误率,特别是列表页和 Sitemap 这类会被反复请求的地址。
把盘点变成例行动作
站点结构会变,入口也会跟着变。建议在栏目调整、模板改版、批量上下线内容之后各做一次轻量盘点,平时按季度检查一遍导航、列表页与 Sitemap 的可用性即可。
入口越多不代表发现效果越好。真正有意义的是:从首页出发,用尽量少的跳转走到每一个需要被发现的页面,并且这条路是稳定可请求的。