做蜘蛛池入口页时,很多人习惯把链接写成相对路径,例如 /a/123.html 或 page/456.html。如果页面头部多了一个 <base href='https://旧域名.com/'>,搜索蜘蛛解析出来的目标地址可能完全不是你想要的域名。这个问题不常被注意,但会直接影响 URL 发现。
搜索蜘蛛会按 HTML 规则解析 base
HTML 规范里,文档中相对 URL 的解析基准可以受 base 标签影响。搜索蜘蛛抓取入口页时,通常也按这套规则处理。它不会因为你主观上想指向新站,就自动忽略 base 指向的旧域名。
- 如果 base 指定了域名,相对链接会拼到该域名下。
- 如果 base 只指定了路径,链接会在当前域名下按新路径拼接。
- 写成绝对 URL 的链接不受 base 影响,会按原样识别。
所以问题不在于搜索蜘蛛能不能识别链接,而在于它识别到的是哪一个地址。入口页里看起来正常的文字,解析后可能变成另一个站点的 URL。
常见误用场景
模板复制、测试环境切正式环境、旧站改版新站,都容易留下 base 标签。以下几种情况比较常见。
- 从旧模板复制入口页:base 还指向旧域名,页面上所有相对链接都被带过去。
- 测试环境和正式环境混用:本地测试时用 base 指向测试域名,上线后忘记删除。
- base 指向带目录的地址:相对链接会拼到该目录后面,可能批量产生 404。
- 同时存在多个 base:浏览器和蜘蛛通常只认第一个,后面的不生效,容易误判。
这些情况不一定马上被发现。因为入口页本身可以正常打开,肉眼看到的链接文字也没变,只有查看源码或看日志时才会暴露。
相对路径、根路径和绝对地址的区别
理解三种写法的差异,有助于判断 base 会带来多大影响。
- 相对路径:如 page/123.html,会受 base 的域名和目录影响。
- 根路径:如 /page/123.html,通常只受 base 的域名影响,目录部分影响较小。
- 绝对地址:如 https://目标站.com/page/123.html,基本不受 base 影响。
如果你的入口页链接混合了这三种写法,排查时会更麻烦。搜索蜘蛛可能一部分链接抓对了,另一部分抓到了旧域名,日志里看起来像是“有些 URL 发现了,有些没发现”。
怎么排查和修正
不需要复杂工具,先看源码,再做抓取测试。
- 在浏览器里打开入口页,查看源代码,搜索 base 标签。
- 确认 base 是否存在、指向哪个域名、有没有多余目录。
- 用抓取测试工具或日志确认搜索蜘蛛实际请求的 URL,而不是只看页面文字。
- 把关键链接改成绝对地址,尤其是目标 URL 列表。
- 如果确实不需要 base,直接删除,避免后续复制模板再次带出问题。
入口页的作用是把搜索蜘蛛带到目标 URL。如果 base 把相对链接解析到另一个域名,入口页等于在帮倒忙。先保证解析结果正确,再谈更新频率和数量。
如果 base 已经造成错误解析
先修正入口页,让相对链接回到正确域名。然后观察日志里搜索蜘蛛对正确 URL 的请求变化。已经抓错的那部分,通常需要重新被发现,不会因为改回 base 就自动回到目标站。入口页本身如果被缓存,还要确认缓存版本是否同步更新。
如果入口页由 CDN 或反向代理提供,旧版本可能还在缓存中。搜索蜘蛛抓到旧 HTML 时,base 和链接仍按旧版解析。此时除了改源文件,还要处理缓存刷新,否则修正不会立即反映到抓取端。
小结
base 标签不是搜索蜘蛛的盲区,它会影响相对链接的解析域名。入口页出现链接“跑到别的站”或批量 404 时,优先检查 base。对蜘蛛池和站点运营来说,入口页的链接最好用绝对地址,减少模板复制和环境切换带来的解析偏差。这样搜索蜘蛛发现的 URL 才更接近你真正想提交的目标。