先给结论:在标准解析流程下,相对路径和绝对路径都能被搜索蜘蛛识别,但相对路径会把“入口页自身的地址”卷进来,变量更多、出错概率更高。对于蜘蛛池入口页这种批量生成、路径和参数往往不统一的场景,写成完整的绝对 URL 通常更稳。
搜索蜘蛛是怎么解析一个 href 的
大致是四步:抓取 HTML、提取 href 属性值、把属性值和当前页面的最终 URL 做解析合并、得到完整 URL 后去重并进入待抓队列。
- 一般只认 http 和 https 两种协议,其它协议会被丢弃;
- 会做去重,同一个完整 URL 在同一页出现多次只算一条;
- 解析的基准是“最终 URL”,也就是经过重定向之后真正返回内容的那个地址。
问题往往就出在第三步和第三点上。
相对路径在入口页里容易踩的四个坑
1. 页面里有 base 标签
如果入口页模板里带了 base 标签,所有相对路径都会以 base 的地址为基准,而不是你以为的当前页地址。批量模板经常复制粘贴,一旦残留一个 base,目标链接可能全部指向错误的位置。
2. 入口页自己带路径或参数
入口页地址是 /a/b/page.html 时,写成 target.html 会被解析成 /a/b/target.html;写成 /target.html 才是根目录。入口页如果还能被参数化访问,同一份相对路径可能解析出多个不同的绝对地址,凭空多出重复 URL。
3. 入口页发生跳转
入口页如果先 301 到另一个地址再输出内容,相对路径的解析基准会跟着变。你按源地址写的相对链接,实际合并出来的结果可能和预期差一个目录层级。
4. 结尾斜杠与目录式地址
/a/b 和 /a/b/ 在合并相对路径时结果不同,前者会把 b 当成文件,后者当成目录。入口页地址规则不统一时,相对路径就会时对时错。
绝对路径也不等于万无一失
- 协议相对写法://example.com/page 会继承当前页面的协议,入口页是 http 就可能带出 http 版本链接,和目标站点的 https 版本形成两份地址。
- http 与 https 混用:同一目标同时出现两种协议,多数情况会被当成两个 URL 分别处理。
- 末尾斜杠、大小写、默认端口不一致:/page、/page/、/Page、:443 这些写法可能被视为不同地址,抓取预算就被分散了。
- 未编码字符:URL 里的空格、中文、& 等符号如果没有做百分号编码,解析时容易被截断。
- 多域名指向同一内容:入口页分散在多个域名时,链接里最好直接写目标站点的规范域名,减少中间跳转。
可落地的写法建议
- 入口页里的目标链接统一用完整绝对 URL,明确带 https://。
- 全站统一一种域名写法,要么带 www 要么不带,不要混用。
- 目标 URL 参数能去掉就去掉,必须保留的按固定顺序排列,避免同一内容产生多种排序。
- 中文、空格、& 等字符做百分号编码。
- 确实要用相对路径时,先确认入口页没有 base 标签、没有前置跳转、地址规则统一。
- 批量上线前抽几条入口页,用抓取工具看实际解析出的链接列表,重点核对域名、协议和路径层级。
链接写法只决定搜索蜘蛛能否准确定位并正确去重目标 URL。它不能保证被抓取,更不能保证被收录,最终还是要看入口页本身的可访问性和目标页面的内容质量。
实际运营中,与其在相对路径和绝对路径之间反复纠结,不如把入口页模板固定成一种写法并做一次全量校验。批量场景里,一致性比技巧更重要。