做過網站改版的站長可能遇到過類似情况:站点從HTTP迁到HTTPS,但老版本没有彻底屏蔽,或者新版本上线後舊入口依然保留。于是在蜘蛛池的抓取日誌里,同样的内容會以http://與https://两種形式被反复抓取。表面上看蜘蛛很勤奋,實际上URL發現效率正在被悄悄拖累。
搜尋蜘蛛如何理解HTTP和HTTPS?
在搜尋引擎眼中,http://和https://是两個完全不同的URL。哪怕頁面内容一模一样,只要协议不同,就會被视作两個獨立地址。蜘蛛爬行时會分別處理,既不會自動認為https是http的升級版,也不會主動選擇其中一個作為首選版本。
当站点同时開放两種协议,蜘蛛的抓取队列里就出現了大量重复條目。原本用来發現新URL的资源,被消耗在反复比較两邊是否一致上。你會發現新提交的URL迟迟得不到抓取,而蜘蛛却在舊版本的頁面上来回跑。
並存带来的具体隐患
- 重复抓取:同一頁面被两種协议各抓一遍,浪費了宝贵的最低抓取額度。
- 權重分散:外鏈和内鏈若混用协议,連結權重就拆成了两份,導致每個版本都排名不稳定。
- 索引混乱:搜尋引擎可能交替索引不同版本,有时甚至同时保留,造成内容重复。
- 协议轉換跳轉:如果HTTP頁面没有301跳到HTTPS,或者跳轉鏈條過長,蜘蛛會失去耐心,放弃繼續發現後續URL。
如何引導蜘蛛明确抓取目标
解决思路很清晰:让搜尋引擎只認一個协议,並确保所有入口都指向同一版本。以下是可以落地的操作步骤。
1. 全站301跳轉
在服務器层面將HTTP請求301永久重定向到HTTPS。注意跳轉要直達最终URL,不要出現多次跳轉。比如訪問http://a.com/old跳到https://a.com/old,再跳到https://www.a.com/new,這種鏈條會让蜘蛛产生不信任感。
2. 設定canonical标簽
在每個頁面的head区加上rel="canonical",指向對應的HTTPS版本。即使某個HTTP頁面被其他站点連結,搜尋引擎也會將這個網址的權重归並到canonical指定的标准地址上。
3. 更新sitemap和内鏈
sitemap中只保留HTTPS协议的URL。網站内部所有連結,包括導航、正文、底部連結,统一改成HTTPS格式。另外別忘了检查robots.txt,確認没有屏蔽蜘蛛訪問HTTPS路径。如果你在用蜘蛛池观察,此时要關注它的抓取队列里是否還出現HTTP入口。
4. 使用HSTS(可選)
HSTS能强制浏览器用HTTPS訪問你站点,對真實用戶很有效。不過搜尋引擎蜘蛛不一定完全支持HSTS,所以不能把它当成唯一的解决方案。它更像是辅助工具,建议在确定HTTP已经完全废弃後開啟。
日常检查要点
即使做好了以上配置,也要定期检查是否還有漏網之鱼。例如部分老外鏈仍然指向HTTP,或某些低版本的浏览器和程序還在請求HTTP。可以用蜘蛛池的模拟抓取功能,主動检查一批歷史URL看是否返回301且最终落点正确。
一個容易被忽视的地方:如果HTTP和HTTPS都開啟了CDN,跳轉規則必须同步配置。否則不同节点可能返回不同的狀態碼,蜘蛛會認為是两個系統。
總结
HTTP和HTTPS並存不是不能執行,但會嚴重干扰搜尋蜘蛛的URL發現节奏。通過設定唯一协议、合理跳轉和统一内鏈,蜘蛛才能把有限的時間花在發現新URL上。與其让蜘蛛在两個版本之間做選擇题,不如你直接告诉它答案。