站点的相对链接写法本身没有问题,但只要页面里多出一个 base 标签,所有相对路径的解析基准就会整体偏移。搜索蜘蛛按 HTML 规则解析链接时遵循同一套基准拼接逻辑,一旦 base 指向了非预期目录,原本存在的入口会变成一串不存在的地址,抓取日志中则表现为成组出现的 404 与重复路径。
base 标签如何改变链接的解析基准
在 HTML 规范中,相对 URL 需要先与文档的基准 URL 合并。默认基准是当前页面的地址,而 base 标签可以把它替换成任意地址或目录。蜘蛛拿到源码后做链接提取时同样走这一步,因此 base 写错,等于把整页内链的起点整体挪走。由于它通常写在公共头部模板里,一次出错往往会波及大量页面,而不是孤立的几篇内容。
常见的误配场景
- 从测试环境或旧域名复制模板,base 中的绝对地址没有随上线改回正式域名。
- 使用目录形式但不带结尾斜杠,例如 /news 与 /news/ 会解析出不同结果。
- 前置 CDN 或边缘脚本在响应中注入了额外的 base,源站与线上看到的 DOM 不一致。
- 前端框架为兼容路由手写 base,与服务端输出的静态页混用。
- 相对链接以斜杠开头时不受 base 影响,团队据此判断 base 无害,忽略了大量不带斜杠的相对链接。
排查顺序
- 用具备渲染能力的工具查看最终 DOM,确认 head 中 base 的实际取值、数量和出现位置。
- 取一个页面,手工对比保留 base 与移除 base 两种情况下的链接最终地址,确认差异集中在哪些模板。
- 在抓取日志中筛出状态码为 404 的 URL,观察是否成组出现同一前缀,这是基准偏移的典型特征。
- 核对 sitemap、canonical 与站内链接三处的地址写法是否一致,找出哪一份是正确基准。
- 检查 CDN、反向代理与边缘规则,确认是否在传输环节改写了 head 内容。
- 用不同 UA 和不同出口拉取同一 URL,确认是否只有部分链路被注入 base。
修复与验证
优先去掉 base,改用绝对路径,或由后端统一拼接完整地址;确实需要保留时,应确保以斜杠结尾,且域名、协议与线上一致。相对链接与绝对链接混用的模板,修改后要逐页确认,避免只修好首页。
修复后不要只检查入口页,应覆盖列表页、详情页、分页以及带参数的筛选页,尤其是目录层级较深的模板。验证时可以用抓取日志中新旧地址的访问比例来判断收敛情况,而不是只看某一次抓取结果。
注意:调整 base 后,旧链接的解析结果会立即变化。如果此前已有一批错误地址被抓取过,这些地址可能在一段时间内仍有访问记录,可以继续观察其请求量是否逐步回落,不必急于下结论。
另外建议把 base 纳入上线前检查项,与 canonical、hreflang、favicon 路径等一起核对,这类问题往往源于模板层的改动,反复出现的概率并不低。
小结
base 标签语法简单,但它作用于全页链接,出错时的表征又和普通 404 很像,容易被误判为内容删除或路径改名。把排查重点放在最终 DOM 里的基准地址、日志中成组的 404,以及 sitemap 与内链的地址一致性上,通常能较快定位问题来源。