先想清楚:你希望蜘蛛從哪個入口進来
一個站点通常能通過多種寫法訪問:带 www 和不带 www、http 與 https、主域名與別名域名,甚至直接用 IP。省事的做法是全都留着能打開,代價是同一份内容被当成多份资源:抓取量被分摊,外鏈權重被拆開,服務器日誌里同一個頁面出現好几條来源,統計时很难判断哪條資料是真的。
規范化要做的就是選定一個首選主机名,把其他寫法用 301 一次性归拢過去。下面這份清單可以按顺序過一遍。
跳轉层自查
首選主机名與 301
- 明确選定 https 加 www 或 https 加非 www 其中之一,寫進团队文档,不要今天一個样明天一個样。
- 其余變体全部 301 到首選,避免用 302、307 長期顶着,這類跳轉不传递規范化信号。
- 尽量让 http 版本一步跳到最终的 https 首選地址,而不是先到 https 再去 www,鏈式跳轉會让每次抓取多花一轮往返。
- 跳轉要覆盖到具体路径,而不是一律回首頁,否則内頁的外鏈和收錄信号會被丢掉。
服務器預設站與 IP 訪問
- 检查 Nginx 的 server_name 或 Apache 的 VirtualHost 是否有兜底配置,未匹配的主机名會不會返回正常頁面。
- 用 IP 直接訪問时,建议返回 403 或 301 到首選域名,不要让 IP 也能渲染完整站点。
- 如果站点挂在 CDN 後面,確認回源时發送的 Host 头以及缓存键是否包含主机名。
頁面层自查
canonical 與内鏈一致性
- canonical 使用绝對地址,並且指向首選主机名,不要寫成目前訪問的變体,否則等于自我否定。
- 模板里生成 canonical 时留意變量有没有被替換,批量出現的错誤往往比單個頁面更难排查。
- 站内導航、面包屑、正文連結、Sitemap、RSS 统一使用首選域名,避免同一頁在不同位置出現两種寫法。
- 抽查一批内頁,看有没有硬编碼的老域名残留,尤其是歷史文章和专题頁。
Cookie 與安全設定
- Cookie 的 Domain 不要随手寫成 .example.com 這種带点的形式,這样 www 與各子域會共享,容易把測試態带進正式訪問。
- 提交 HSTS 前確認所有子域都已全量 HTTPS,否則會把還在用 http 的子域直接挡在门外。
- 證书要覆盖實际在用的所有主机名,包括 www 與別名域名,別让某個入口先彈安全告警。
驗證时看什么
- 用 curl 带上 -I 分別請求 http、https、www、非 www 和 IP,逐個记錄狀態碼與 Location,確認最终都指向同一個地址。
- 看一段時間的訪問日誌,按 Host 字段分组統計,正常情况下非首選主机的請求量應该趋近于零。
- 在搜尋资源平台只驗證首選主机名即可,驗證一堆變体只會让自己更乱。
- 随机抽 20 個内頁,检查标题、canonical 與内鏈是否都落在首選域名上。
常见坑:只给首頁做了跳轉,内頁仍能通過舊主机名打開;canonical 模板批量生成时出错;子域被 301 到主域,但子域本身還有獨立业務;測試域名與正式域名共用一張證书。
主机名規范化不是一次性任務,它更像一條底线:改服務器配置、換 CDN、新增子域时,都顺手回归检查一遍跳轉和 canonical。入口收敛之後,日誌看得清,抓取也不會再被同一份内容重复消耗。