检查内链结构设计中的前后环节依赖,核心是验证“上游页面是否真的把可抓取链接指向下游页面,下游页面是否真的能通过这条路径被访问到”。不能只看后台列表或编辑器里的链接设置,而要从最终渲染出的HTML、robots规则、重定向链和抓取日志四个环节分别取证,确认上一环的输出正是下一环的输入。
假设一个站点有三层:栏目页A列出文章列表,文章页B正文里链向专题页C。现在C长期没有被抓取,怀疑是内链依赖断了。按顺序检查:
<a href>。如果链接由JavaScript在点击后才生成,爬虫可能看不到,这是“上游没输出链接”的常见错误。<a href>存在且不是nofollow。如果B的链接只在登录后才出现,依赖在爬虫视角下不成立。判断结果:若A有链接到B、B有链接到C、无跳转中断,但C仍未被抓,说明依赖链在“可发现”层面是通的,问题可能出在C自身被robots.txt拦截、返回非200状态或被站点级规则排除。若B的HTML里根本没有C的链接,则依赖确实断在B这一环,需要补链接或改为服务端渲染输出。
rel="nofollow"、rel="sponsored"等属性。被标记的链接仍可能被发现,但传递作用受限,是否算“有效依赖”取决于你的目的。Disallow。注意robots.txt只限制抓取,不等于索引移除;反过来,允许抓取也不保证收录。最常见的误判是看到CMS后台的“相关文章”模块已启用,就认为下游页面已被链接。实际输出可能受模板条件、栏目权限、缓存或分页限制影响,最终HTML里并没有这些链接。另一种错误是把重定向当成正常链接:A指向旧URL,旧URL再301到B,链路看似存在,但中间任何一跳配置错误都会让依赖失效。还有一种是把HTTPS当作安全与可抓取的保证,HTTPS不保证页面无漏洞,也不保证排名或收录,它只是传输层条件之一。
检查时应以“最终响应”为准:对每个环节记录URL、HTTP状态码、最终HTML中是否存在目标链接、链接是否可点击。多个现象可能有多个解释,例如C未被抓既可能是B没链接,也可能是C被robots拦截或返回404,不要在没有逐项排除前断言唯一原因。
按“从下游往上游”排查更高效:先确认目标页C是否可被抓取(状态码、robots、是否需登录),再检查直接指向C的页面B是否真的输出了链接,再检查指向B的页面A,逐层回溯到入口页。每层只问一个问题:上一环的输出里,是否存在一条指向下一环的可抓取链接?如果某层缺失,就补该层的输出;如果各层都存在,则把排查方向转到目标页自身的可索引条件。不同搜索引擎对脚本渲染和链接属性的处理存在差异,涉及具体搜索引擎时应分别核查其官方文档,而不是用一套结论套用全部。
下一步:选一个你怀疑断链的目标页,按上述顺序抓取它、它的直接上游页和再上一级页面,记录每层的状态码与链接存在情况,再决定是补链接、修跳转还是处理目标页本身的可抓取限制。