搜索抓取

搜索蜘蛛抓取:base 标签与相对链接解析偏差造成的抓取路径偏移

页面内链本身没有改动,但只要 head 里多出一个 base 标签,所有相对链接的解析基准就会整体偏移,蜘蛛提取到的入口会变成一串不存在的地址。文章梳理 base 影响链接解析的原理、常见的误配场景,并给出一套从最终 DOM 到抓取日志的排查顺序与验证方法。

搜索抓取

搜索蜘蛛抓取:base 标签与相对链接解析偏差造成的抓取路径偏移

站点的相对链接写法本身没有问题,但只要页面里多出一个 base 标签,所有相对路径的解析基准就会整体偏移。搜索蜘蛛按 HTML 规则解析链接时遵循同一套基准拼接逻辑,一旦 base 指向了非预期目录,原本存在的入口会变成一串不存在的地址,抓取日志中则表现为成组出现的 404 与重复路径。

base 标签如何改变链接的解析基准

在 HTML 规范中,相对 URL 需要先与文档的基准 URL 合并。默认基准是当前页面的地址,而 base 标签可以把它替换成任意地址或目录。蜘蛛拿到源码后做链接提取时同样走这一步,因此 base 写错,等于把整页内链的起点整体挪走。由于它通常写在公共头部模板里,一次出错往往会波及大量页面,而不是孤立的几篇内容。

常见的误配场景

  • 从测试环境或旧域名复制模板,base 中的绝对地址没有随上线改回正式域名。
  • 使用目录形式但不带结尾斜杠,例如 /news 与 /news/ 会解析出不同结果。
  • 前置 CDN 或边缘脚本在响应中注入了额外的 base,源站与线上看到的 DOM 不一致。
  • 前端框架为兼容路由手写 base,与服务端输出的静态页混用。
  • 相对链接以斜杠开头时不受 base 影响,团队据此判断 base 无害,忽略了大量不带斜杠的相对链接。

排查顺序

  1. 用具备渲染能力的工具查看最终 DOM,确认 head 中 base 的实际取值、数量和出现位置。
  2. 取一个页面,手工对比保留 base 与移除 base 两种情况下的链接最终地址,确认差异集中在哪些模板。
  3. 在抓取日志中筛出状态码为 404 的 URL,观察是否成组出现同一前缀,这是基准偏移的典型特征。
  4. 核对 sitemap、canonical 与站内链接三处的地址写法是否一致,找出哪一份是正确基准。
  5. 检查 CDN、反向代理与边缘规则,确认是否在传输环节改写了 head 内容。
  6. 用不同 UA 和不同出口拉取同一 URL,确认是否只有部分链路被注入 base。

修复与验证

优先去掉 base,改用绝对路径,或由后端统一拼接完整地址;确实需要保留时,应确保以斜杠结尾,且域名、协议与线上一致。相对链接与绝对链接混用的模板,修改后要逐页确认,避免只修好首页。

修复后不要只检查入口页,应覆盖列表页、详情页、分页以及带参数的筛选页,尤其是目录层级较深的模板。验证时可以用抓取日志中新旧地址的访问比例来判断收敛情况,而不是只看某一次抓取结果。

注意:调整 base 后,旧链接的解析结果会立即变化。如果此前已有一批错误地址被抓取过,这些地址可能在一段时间内仍有访问记录,可以继续观察其请求量是否逐步回落,不必急于下结论。

另外建议把 base 纳入上线前检查项,与 canonical、hreflang、favicon 路径等一起核对,这类问题往往源于模板层的改动,反复出现的概率并不低。

小结

base 标签语法简单,但它作用于全页链接,出错时的表征又和普通 404 很像,容易被误判为内容删除或路径改名。把排查重点放在最终 DOM 里的基准地址、日志中成组的 404,以及 sitemap 与内链的地址一致性上,通常能较快定位问题来源。