site:yourdomain.com 返回混杂的 http://yourdomain.com/article、https://yourdomain.com/article、http://www.yourdomain.com/article、https://www.yourdomain.com/article——都服务一样的内容。一篇内容四个 URL 变体。每个变体几年下来各自积累外链权重,但对排名算法来说像是四个独立、内容稀薄的页面。修法把强制 HTTPS、www-vs-apex canonical 选择、几周通过 301 耐心合并组合在一起。
本文把 HTTPS 没强制 和 www 与 non-www 都能独立打开 的步骤整合成一个迁移计划。
常见原因
按命中率从高到低。
1. 站早于 HTTPS-by-default 时代
~2018 年前上线的站常常原生服务 http。后来加 HTTPS 时 http 保留没强制重定向。多年来外链积累到 http。
怎么判断:site:yourdomain.com 结果含 http:// URL。看 Google Analytics 引荐源——很多外链指向 http 就是这个历史。
2. www 和 apex 都服务内容
主机加了两个,没配重定向。
怎么判断:curl -sI https://yourdomain.com 和 curl -sI https://www.yourdomain.com 都返回 200。
3. 多年来外链版本不一致
哪怕现在强制 HTTPS,外站还有几年前指向老 www/non-www 变体的外链。Google 索引里仍这样映射。
怎么判断:外链报告(Ahrefs、Majestic)显示外链指向多个 URL 变体。
4. CDN 直接服务四个变体
CDN 没配适当重定向就从缓存服务所有变体。
怎么判断:检查 CDN 配置里的重定向规则。没有就所有变体都通过。
5. canonical 标签在不同版本设得不一致
http://yourdomain.com/article canonical 指自己。https://www.yourdomain.com/article canonical 指自己。没重定向时,四个都 self-canonical,Google 没法统一。
怎么判断:view-source 每个变体。四个都不同 self-canonical 就没赢家。
6. sitemap 列了多个变体
sitemap 有 http 和 https URL,或 www 和 non-www。让 Google 混乱。
怎么判断:cat sitemap.xml | grep -E "^https?://" | sort -u。应该只有一种变体。
最短修复路径
第 1 步:决定 canonical
格式:https://[www-或-apex].yourdomain.com/。选:
https://yourdomain.com/(apex)https://www.yourdomain.com/(www)
SEO 上都行。选一个写下来。
第 2 步:其它三个 301 到 canonical
| 从 | 到 |
|---|---|
http://yourdomain.com/* | https://[canonical]/[path] |
https://yourdomain.com/*(如 www 是 canonical) | https://www.yourdomain.com/[path] |
http://www.yourdomain.com/* | https://[canonical]/[path] |
https://www.yourdomain.com/*(如 apex 是 canonical) | https://yourdomain.com/[path] |
Vercel 设了 primary 后自动这样。Cloudflare 用 Page Rules 或 Bulk Redirects。
第 3 步:设 HSTS
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
强迫浏览器完全跳过 http。稳定几个月后提交 HSTS preload 列表。
第 4 步:内链改成 canonical 形式
# 在代码库找硬编码 URL
grep -rn "http://yourdomain.com\|yourdomain.com/[^/]" src/ public/
更新所有指向非 canonical 变体的链接。
第 5 步:sitemap 只用 canonical URL 重新生成
sitemap 每页一条用 canonical URL。
第 6 步:canonical 标签也更新
所有页 self-canonical 到 canonical 版本:
<link rel="canonical" href="https://yourdomain.com/article/" />
第 7 步:如果适用,提交 Change of Address
从 http canonical 迁到 https,在 Search Console 当域名变更处理。
第 8 步:等 4-12 周合并
Google 需要时间跟随 301、把权重合并到 canonical。监控:
- Search Console → Pages:变体显示 “Page with redirect” 状态是好的
- Performance:总点击数应稳定或上升(分散流量被合并)
哪些情况可能不是你操作错了
即使修了,Google 索引里的老收录版本仍持续几周——耐心。不用焦虑 site: 查询里仍出现每一个老 URL。
容易误判的情况
只设 <link rel="canonical"> 不能强制重定向。两个版本仍服务。平台层 301 才能让 Google 合并。
预防建议
- 任何新站第一天就强制 HTTPS 并选定 www-vs-apex。
- canonical 标签、sitemap、OG 标签、JSON-LD 都用绝对 URL(完整 https://canonical/path)。
- 任何基础设施变更后用 curl 验证所有变体 301 到 canonical。
- 每季度审外链;高价值的指向非 canonical 变体的链接联系站长更新(实际可行的情况下)。
FAQ
- www 还是 non-www? SEO 没差——选一个坚持。配合 CDN 更方便:www(CNAME);URL 更短:apex。
- Google 会合并权重吗? 会——通过 301,要 4-12 周。指向非 canonical 变体的外链通过重定向仍能传递权重。