常见问题

入口页链接用相对路径还是绝对路径,搜索蜘蛛抓取会受影响吗?

入口页写相对路径还是绝对路径,会影响搜索蜘蛛抓取吗?本文说明两种写法在实际抓取中的差别,列出 base 标签、../ 层级、大小写与尾斜杠等容易解析出错误地址的写法,并给出可执行的排查顺序和更稳妥的写法建议。

常见问题

入口页链接用相对路径还是绝对路径,搜索蜘蛛抓取会受影响吗?

结论先说:相对路径和绝对路径,搜索蜘蛛都能处理。真正决定抓取结果的,是浏览器和蜘蛛把这段路径解析成哪个绝对 URL,以及这个 URL 是否唯一、稳定、可访问。

两种写法的实际差别

蜘蛛拿到一段 HTML 后,会以当前页面的 URL 为基准,把 href 解析成完整地址,再去请求。相对路径只是写法更短,解析环节多了一步,本身不会因此降低被发现和抓取的概率。

  • 绝对路径:基准固定,歧义最少,但站点迁移或换域名时容易漏改。
  • 相对路径:迁移省事,却容易因为目录层级、base 标签、尾斜杠差异,解析出与预期不同的地址。
  • 协议相对(//example.com/a):解析结果依赖当前页面的协议,站点同时提供 http 与 https 时,容易出现两个版本。

常见出问题的写法

1. 页面里有 base 标签,但和实际结构不一致

base 会改变所有相对链接的解析基准。入口页若套用模板,模板里带了一个指向别处的 base,正文里的相对链接就会全部指向错误目录,蜘蛛顺着抓到的往往是 404 或者不相干的页面。

2. ../ 的层级数错了

入口页通常由脚本批量生成,模板里写死 ../ 或 ../../。一旦入口页分布在不同深度的目录下,同一段模板就会把部分链接解析到上一层无关目录。日志上看起来蜘蛛来过,但抓到的都不是目标 URL。

3. 大小写与尾斜杠不一致

/List/ 和 /list/、/a 和 /a/ 在很多服务器上属于不同地址。同一目标 URL 在入口页里出现多种写法,会让蜘蛛把它当成多个候选地址,抓取机会被分散,也不利于后续判断哪一个是规范地址。

4. 路径里有空格或中文没有编码

href 里直接写空格或中文,不同解析器补全方式可能不完全一致,容易出现解析失败或指向错误地址。这类链接建议直接写成已编码的地址。

排查顺序

  1. 在入口页查看源码,取出一条目标链接,确认源码里到底写的是什么。
  2. 用浏览器控制台或在线工具,按当前页面 URL 把它解析成绝对地址。
  3. 把解析结果与实际能访问的地址逐字对比,重点看目录、大小写、尾斜杠、参数。
  4. 拿这个绝对地址去抓取日志里找,看蜘蛛是否请求过、返回了什么状态码。
  5. 如果日志里完全没有,回到入口页确认链接是否真的在 HTML 里,而不是脚本渲染后才出现。

更稳妥的做法

  • 入口页指向目标 URL 的关键链接,优先写绝对地址,减少解析环节和歧义。
  • 批量生成模板时,把域名和基础路径抽成变量,避免 ../ 写死。
  • 全站统一尾斜杠规则,并在入口页保持一致。
  • 不要为了省事依赖 base 标签,它的影响范围比想象中大。
  • 改版或迁移后,抽几条入口页链接重新解析一遍,作为常规检查项。
相对路径本身不是问题,路径解析结果不一致才是问题。判断标准很简单:你希望蜘蛛抓的那个绝对地址,能不能在日志里稳定出现。