很多人在搭蜘蛛池入口頁时,會纠结連結到底该寫成 /path/page.html 這種相對路径,還是 https://example.com/path/page.html 這種绝對路径。這個問题本身没有唯一答案,但寫法确實會影响搜尋蜘蛛最终拿到的地址,是不是和你想的那一條一致。
结论先说清楚
相對路径和绝對路径都能被主流搜尋蜘蛛解析,不存在“只有绝對路径才會被抓”的说法。真正會出問题的是解析结果:蜘蛛會把入口頁目前地址作為參照,把相對路径拼成完整 URL。如果參照地址和你预期不同,或者頁面上有 base 标簽、协议差异、大小寫差异,拼出来的地址就可能指向另一個 URL,甚至是一個打不開的頁面。
两種寫法各自的差別
- 绝對路径:蜘蛛不需要推算,看到什么就是什么。跨目錄、跨子域、https 與 http 混用时更稳。
- 相對路径:頁面结构改動、入口頁被镜像、被 CDN 以另一個域名回源时,解析出的地址可能跟着變。
- 根相對路径(以 / 開头):只在同域名下安全,域名換了就是另一個站。
- 無斜杠相對路径(page.html):取决于目前頁所在目錄,容易在多級目錄里拼错层級。
几種容易解析错的寫法
1. 頁面里有 base 标簽
只要 head 里出現 <base href="…">,頁面上所有相對路径都會以它為准,而不是以目前頁面地址為准。模板里残留一個用不到的 base 标簽,最常见的後果就是把連結全部指到一個已经不用的域名上。
2. 协议相對連結 //example.com/a
這種寫法會繼承目前頁面的协议。入口頁如果同时能通過 http 和 https 打開,蜘蛛拿到的目标地址协议就會跟着變,两個协议最终可能被当成两條不同的 URL 處理。
3. 大小寫與结尾斜杠不一致
很多服務器對路径大小寫敏感,/Page.html 和 /page.html 是两條地址;/list 和 /list/ 也可能返回不同内容。入口頁里混着寫,蜘蛛發現的 URL 數量會變多,而其中一部分可能是空頁面或跳轉頁。
4. 相對路径的层級算错
在 /a/b/index.html 里寫 ../c/page.html,解析结果是 /a/c/page.html;換成 c/page.html 就是 /a/b/c/page.html。层級一错,目标 URL 就變成了另一個不存在的地址。
排查时按這個顺序看
- 取入口頁的原始 HTML,確認連結是哪種寫法,頁面里有没有 base 标簽。
- 用浏览器開發者工具查看連結的最终解析地址,属性面板里通常能直接看到完整的 href 值。
- 對照服務器日誌,看蜘蛛實际請求的路径是不是你期望的那一條。
- 检查入口頁是否能通過多個域名或多種协议訪問,如果是,尽量统一到一個規范地址。
- 抽查目标 URL 的可訪問性,確認解析出来的地址能正常打開,而不是 404 或跳到別處。
寫法上的几個小建议
- 入口頁里的目标連結尽量用绝對路径,减少推算环节。
- 不要保留模板里用不到的 base 标簽。
- 全站统一是否带结尾斜杠,並保持大小寫一致。
- http 與 https 只保留一個入口,另一個做規范跳轉。
- 連結文字和 href 尽量對得上,避免让人和蜘蛛都誤判目标。
相對路径不會让蜘蛛“抓不到”,但會让解析结果變得依赖上下文。連結寫得越明确,排查問题时越省事。
如果你的現象是入口頁被抓了、目标 URL 却没出現,先別急着換蜘蛛池,按上面几步把入口頁的連結解析结果核對一遍。很多时候問题不在蜘蛛,而在一條被拼错的地址。