核对抓取与索引配置,不是把页面打开看一遍,而是用HTML链接代码本身回答三个问题:搜索引擎能否发现这个链接、能否顺着它进入目标页、进入后是否允许索引。上线前最有效的做法是把页面里的<a>逐个过一遍,确认href是真实可访问的URL、没有被JavaScript占位、没有落在robots.txt禁止区,并且目标页没有noindex。多人协作时,把这份核对结果写成一张可勾选的清单,比口头交接更省返工。
抓取解决的是“能不能拿到页面”,索引解决的是“拿到后要不要收进结果”。一个链接可抓取,不代表目标页会被索引;反过来,页面被索引过,也不代表新加的链接一定被爬到。上线前核对要按顺序走:先确认链接可被抓取,再确认目标页允许索引,最后确认链接指向的地址是最终要交付的版本。
href里、是否被robots.txt拦截、是否返回200状态。noindex、是否被canonical指向了别的地址、是否要求登录才能看到内容。下面这套步骤可以直接在本地或预发环境执行,不需要额外工具也能完成大部分检查。
<a href="...">提取出来,列成一张表,字段包括:所在页面、链接文案、href值、目标页类型。#、javascript:void(0)或空值,标记为不可抓取链接。<meta name="robots" content="noindex">,并确认canonical指向的是该页自身而不是其他页面。Disallow规则覆盖。注意规则按前缀匹配,写错一层目录就会连带挡住子路径。这套步骤的适用条件是:页面数量可控、链接以站内为主。如果站点有几十万URL,逐条人工核对不现实,应改为抽样加规则校验,重点覆盖导航、面包屑、分页和主要入口页。
nofollow不等于不抓取。给链接加rel="nofollow"是提示不传递权重信号,并不等于禁止爬虫访问该地址。如果目的是阻止抓取,应使用robots.txt;如果目的是阻止索引,应使用noindex。三者作用对象不同,混用会导致预期落空。
canonical写错会改变索引目标。如果A页的canonical指向B页,搜索引擎可能只保留B页。上线前要确认每个页面的canonical指向自己,除非确实存在重复内容需要合并。
重定向链要短。href直接指向最终地址最省事。若必须经过跳转,确认跳转是301且只有一跳。多跳重定向会增加抓取消耗,也容易在协作中被漏改。
robots.txt的Disallow和noindex会互相干扰。如果某路径被robots.txt禁止抓取,爬虫就读不到该页的noindex标签,页面仍可能因为外部链接被索引。需要阻止收录时,优先让页面可抓取但返回noindex。
把核对结果固化成一份交接物,内容至少包含:链接清单表、robots.txt相关规则截图或文本、每个目标页的索引状态、待确认项和负责人。开发改完链接后,由同一人复核href和canonical是否同步更新,避免只改了一处。上线后可以用站点地图和抓取日志抽查,确认新链接确实被访问过。
如果团队使用构建流程,可以在构建阶段加一条校验:扫描输出HTML中的<a href>,对空值、测试域名、javascript:开头的链接直接报错阻断发布。这样把人工核对变成自动拦截,比上线后再回头改成本低得多。
下一步建议先拿一个代表性页面走完整套流程,把发现的问题类型记下来,再决定哪些检查项适合写成脚本自动执行、哪些必须保留人工判断。