同一個站点,往往能用好几個地址打開:带 www 的、不带 www 的、http 的、https 的,甚至大小寫不同的寫法。訪客打開哪個都能看到同一套頁面,但蜘蛛會把這些当成不同地址,抓取、外鏈和統計資料被分散。把主机名和协议统一,是站点运营里一次做完、長期省事的基础工作。
先數清楚站点有几個入口
拿一張纸把下面几组地址都列出来,逐個用浏览器打開,看它們各自返回什么狀態。
- 主域名與 www 子域:example.com 和 www.example.com 是否都能訪問,谁是主,谁跳向谁。
- http 與 https:http 版本是直接跳到 https,還是仍然能正常返回頁面。
- 大小寫與端口:大寫形式的域名、带 :80、:8080 之類的寫法是否被服務器接受。
- 預設文档與尾部斜杠:/about 和 /about/ 是否指向同一頁。
- 备用域名:老域名、測試域名、CDN 提供的临时域名是否對外可訪問。
统一方向上的自查清單
- 是否選定了一個唯一的主地址(例如统一的 https 加带 www,或 https 加不带 www),並且全站都向它靠拢。
- 其他所有寫法是否返回 301 永久跳轉,而不是 302、跳轉套跳轉,或者干脆也返回正常頁面。
- 頁面里的 canonical 标簽寫的是不是這個主地址,且與跳轉方向一致,没有互相打架。
- 站点地图、RSS、分享按钮生成的連結,是否都用主地址形式。
- 站内連結、導航、面包屑里的寫法是否统一,没有混着 http 和 https。
- HTTPS 證书是否覆盖所有會用到的域名,包括 www 子域和各备用域名。
- Cookie 的 domain 設定是否與主地址對應,避免登入狀態在两個版本之間来回丢。
- CDN 或反向代理的跳轉規則是否和源站一致,別出現两邊各跳一次。
改的时候注意顺序
先確認證书正常、全站 https 可用,再動跳轉規則;先做小范围測試,再全量放開。跳轉尽量寫在服務器或 CDN 這一层,不要靠頁面里的脚本跳轉,那對蜘蛛来说约等于没有跳轉。改完之後,把常用的入口地址再打開一次,確認狀態碼是 301 且目标正确。
如果站点曾经長期存在两種形式,不要指望一次改動就马上收敛。舊地址上残留的外鏈會被持續訪問一段時間,保持跳轉規則長期有效即可,不必急着撤掉。
容易被忽略的细节
- 表單提交地址:頁面是 https,表單的提交地址却寫着 http,浏览器會给出混合内容提示。
- 图片與静態资源:同样要與主协议一致,否則可能出現资源加载被拦。
- HSTS:確認全站 https 稳定之後再考虑開啟,開早了不好回退。
- 訪問日誌:翻日誌时留意蜘蛛訪問的是哪個主机名,如果两種形式都有大量记錄,說明收敛還没做好。
统一主机名不會直接带来流量變化,但它能让抓取、統計和外鏈資料落在同一個帳本上。做完這一步,後續的日誌分析和结构優化才有可靠的前提。