在蜘蛛池入口頁里,連結寫法通常有两種:一種是完整地址,比如 https://example.com/target;另一種是相對路径,比如 /target 或 target.html。很多站長會問:搜尋蜘蛛看到相對連結时,能不能正确找到目标 URL?答案是通常能,但解析出来的地址不一定是你期望的那個域名。
相對連結的解析基准是什么
搜尋蜘蛛解析相對連結时,會以目前頁面的最终 URL 為基准,包括协议、主机名和路径。這里有两個容易忽略的细节:
- 如果入口頁發生了 301 或 302 跳轉,解析基准是跳轉後的最终地址,而不是最初請求的地址。
- 如果頁面里有 base 标簽,浏览器和搜尋蜘蛛都會優先按照 base 指定的地址来解析相對連結。
也就是说,同一段相對連結,放在不同 URL 或不同 base 下,可能指向完全不同的目标。
什么情况下會解析到別的域名
入口頁如果通過 CDN、反向代理或多域名绑定来訪問,風險會更明顯。同一份 HTML 可能被多個主机名訪問,搜尋蜘蛛從不同域名抓到入口頁时,相對連結就會跟随目前訪問域名,解析出不同的目标 URL。
還有一種常见情况是协议相對連結,比如以 // 開头的寫法。它會繼承目前頁面的协议,如果入口頁同时存在 http 和 https 两個版本,搜尋蜘蛛可能解析出重复或跳轉後的地址。
另外,如果相對路径寫得不完整,而入口頁本身又在深层目錄里,相對連結可能被拼到错誤目錄,最终請求到一個不存在的地址。
排查與處理建议
如果你不确定搜尋蜘蛛實际解析到了哪里,可以按下面的顺序排查:
- 用抓取工具或服務器日誌,確認搜尋蜘蛛訪問入口頁时請求的完整 URL,包括协议和主机名。
- 检查頁面里有没有 base 标簽,確認它的值是否是你想要的目标域名。
- 如果入口頁需要多域名訪問,考虑在每個域名下輸出對應的绝對連結,或者统一 301 到主域名。
- 關键目标連結建议寫成绝對 URL,明确协议和域名,减少解析歧义。
相對連結不是不能用,而是要知道它的解析基准。入口頁面向搜尋蜘蛛暴露 URL 时,确定性往往比省几個字符更重要。
最後提醒一点:不要指望用相對連結来隐藏目标 URL。搜尋蜘蛛解析的是最终地址,只要頁面能被抓取,連結指向哪里通常都會暴露出来。把連結寫清楚,反而更有利于後續排查和稳定抓取。