把入口頁部署上去之後,很多人會顺手做一件事:申請證书、開通 HTTPS。如果配置时没有把 HTTP 强制跳轉過去,就會出現 http:// 和 https:// 两個地址都能正常打開、内容還基本一样的情况。這时候一個自然的問题就来了:搜尋蜘蛛會不會把這两個地址当成两個入口頁,重复抓取?
在搜尋蜘蛛眼里,這是两個 URL
對搜尋蜘蛛来说,URL 就是身份标识。http://example.com/a 和 https://example.com/a 是两個不同的字符串,也就是两個不同的 URL。它不會因為内容一样就自動合並,除非你给出明确的信号,比如 301 跳轉或者 canonical 指向。所以在它眼里,你的入口頁可能從一份變成了两份。
會不會重复抓取
會,而且這種重复通常没有收益。搜尋蜘蛛對每個站点有抓取预算的概念,两個协议各抓一遍,等于把同样的预算花在重复内容上。原本可以用来發現更多目标 URL 的配額,被消耗在了协议分叉上。
更需要注意的是,如果两個版本的入口頁都被抓取,那么從入口頁出發的連結也會被重复發現。同一批目标 URL 會被發現两次,日誌看起来流量不错,去重之後實际的有效發現量並没有增加。
常见的三種狀態
- 只有一個协议返回 200,另一個直接 301 跳到它。這是最干净的情况,搜尋蜘蛛跟一次跳轉就收敛到一個地址。
- 两個协议都返回 200,内容基本一致。存在重复抓取的問题,需要主動收敛。
- 两個协议都返回 200,但内容不同,比如某個版本少了連結、少了正文。這是最麻烦的一種,搜尋蜘蛛可能各自建立一套理解,入口頁的作用被分散。
自查清單
- 分別請求两個协议,观察狀態碼、响應头和返回内容是否一致。注意要模拟正常的 GET 請求,而不是只看浏览器地址栏。
- 翻服務器日誌,按协议分组統計自称搜尋蜘蛛的請求量。如果两邊量都很大,說明确實在被重复抓取。
- 检查入口頁 HTML 里所有連結寫的是哪個协议。不少模板會把連結寫成绝對地址,一旦混用,目标 URL 的發現路径也會跟着分叉。
- 检查 canonical、sitemap 里寫的是哪個协议。如果几處信号互相不一致,收敛就更难。
處理思路
- 選一個主版本,一般是 HTTPS,把另一個协议整站 301 過去。跳轉尽量一次到位,不要出現 http 到 https 再到 www 這样的连跳。
- 站内連結统一寫主版本,不要依赖跳轉来纠正每一條連結。
- canonical 和 sitemap 只寫主版本,方向與 301 保持一致。
- 證书要覆盖你實际使用的域名形式,带 www 和不带 www 都要能通過校驗,否則 HTTPS 版本可能因為證书不匹配而报错,搜尋蜘蛛反而回退去抓 HTTP 版本。
- 調整完成後持續观察一到两周日誌,看两個协议的請求量是否逐渐收敛到主版本上。
协议分叉本身不會让頁面變得更差,但它會稀释抓取效率和發現路径。蜘蛛池做的是發現和传递,路径越干净,越容易看出哪一步真正起了作用。
多入口頁场景下的額外提醒
蜘蛛池里入口頁往往是多個域名、多個模板同时跑的。协议分叉叠加上多入口頁,日誌會顯得很热闹,但每一份的抓取深度都會被摊薄。與其一味增加入口頁數量,不如先把每個入口頁的地址收敛干净,再去看連結结构和目标 URL 的响應是否正常。
另外要提醒的是,以上都是抓取效率层面的排查思路。目标 URL 能不能被收錄、什么时候被收錄,還取决于頁面本身的质量和搜尋引擎自己的判断,這不是把协议配置好就能控制的事情。