当站点從單一域名扩展成主站、多個子域、备用域名甚至對象存储域名时,搜尋蜘蛛面對的入口會變得分散。同一份内容可能被多個 host 指向,也可能因為某些子域長期不可達而白白消耗抓取机會。下面讨论的是如何把這些入口梳理清楚,让發現效率回到可控狀態。
先分清哪些 host 真正需要被收錄
梳理的第一步不是改代碼,而是列清單。
- 主域名:對外宣传、内鏈指向、Sitemap 声明的唯一規范入口。
- 业務子域:如帮助中心、社区、商城,确有獨立内容且需要被搜尋到的,保留並單獨维護 Sitemap。
- 备用或老域名:通常只做 301,不參與抓取。
- 測試與预發环境:一律用訪問控制挡住,不要让它出現在任何公開連結里。
- CDN 與對象存储域名:只承载静態资源,不應出現在頁面锚点或 Sitemap 中。
用日誌和 Sitemap 反查入口分布
- 把一段時間内的抓取日誌按 host 分组統計,看蜘蛛把請求花在了哪些域名上。
- 检查各 host 的返回碼分布,長期 4xx、5xx 或超时的 host 基本是無效入口。
- 核對 Sitemap 與實际可抓的 host 是否一致,避免索引文件里混入已废弃的域名。
- 抽查頁面源碼中的内鏈,確認是否使用绝對 URL,以及绝對 URL 指向的是哪個 host。
這一步做完,通常能發現两類問题:一類是本该被抓的 host 没有入口,另一類是不该被抓的 host 反而占了不少請求。
入口收敛:让連結、Sitemap、重定向说同一件事
收敛的核心是“唯一”。同一份内容只保留一個規范 host,其余入口用 301 指向它。
- 站内連結统一使用绝對地址,並指向規范 host,避免相對連結在不同子域下解析出不同结果。
- Sitemap 按 host 拆分或合並时,只列需要被抓的 URL,不要顺手把备用域名也寫進去。
- 跨子域跳轉如果是常態,可以考虑用主域下的路径替代子域,减少 host 切換带来的額外解析與连接開销。
- 老域名上的 301 要指向最终地址,不要在主域與备用域之間来回跳。
服務器與解析层面的稳定性
多 host 结构對稳定性的要求更高,因為任何一個 host 異常都會單獨影响一批入口。
- 確認每個對外 host 的 DNS 解析指向正确且稳定,不要在不同线路下指向不同源站。
- 證书覆盖所有對外 host,包括带 www 與不带 www 的寫法,避免握手失敗造成抓取中断。
- 關注各 host 的响應時間差异,某個 host 明顯偏慢时,整体抓取节奏也會被拖低。
- 定期检查是否有 host 已经下线却仍被内鏈引用,這類連結會持續产生無效請求。
观察收敛後的效果
調整之後不建议立刻下结论。按周對比抓取日誌中的 host 分布,看無效 host 的占比是否下降、内容頁的抓取請求是否回升。如果某些子域的抓取量被压缩過多,再判断是入口确實被收敛了,還是 Sitemap 與内鏈漏掉了應有的入口。
入口整理是長期的维護動作,重点是让每個 URL 只有一個明确的来源,而不是一次性把所有域名都删掉。