www 与 non-www 都能独立打开

访客既能开 yourdomain.com 也能开 www.yourdomain.com,两个都能加载——为什么伤 SEO,怎么修。

https://yourdomain.com——站打开。输 https://www.yourdomain.com——站也打开、内容一模一样。两个都返回 200。对你看着没事;对 Google 的去重和任何跟踪外链的工具来说,你有两个内容一样的站,链接权重被分、canonical 混乱。修法直接:选一个 canonical,另一个 301,在平台层做(不只是 HTML canonical 标签)。跟 www vs root redirect 类似但专门讲两个都已经在跑、内容都加载的更难清理的情况。

常见原因

按命中率从高到低。

1. 主机里加了两个版本但没配重定向

你在 Vercel/Netlify 把 yourdomain.comwww.yourdomain.com 当独立域名都加了。主机愿意都服务但默认不配重定向。

怎么判断:平台控制台 → Domains → 两个都是 “primary” 或都已配置。应该一个主、一个 redirect。

2. CDN 把两者都直接代理到源站

Cloudflare 或别的 CDN 把两条 A/CNAME 都设了代理,两个都到源站、都服务内容。CDN 不重定向除非你告诉它。

怎么判断

curl -sI https://yourdomain.com | head -3
curl -sI https://www.yourdomain.com | head -3

两个都返回 200 = 都直接服务内容。

3. 主机平台不自动跨绑定重定向

一些平台支持加两个但要手动配重定向。它们不会推断”你大概想要一个作 primary”。

怎么判断:平台文档可能说”加两个然后设其中一个为 primary”——如果你跳过了”设 primary”那一步,就没重定向。

4. 设了 canonical 标签但没 HTTP 重定向

你给所有页加了 <link rel="canonical" href="https://yourdomain.com/...">。标签对 Google 有用,但访客还是看到他们输入的 URL。直接外链可能还是指向非 canonical。

怎么判断:两个 URL 都 200(不是 301)。光 canonical 标签不重定向。

5. 旧设置或手写 nginx 同时服务两者

自托管或老共享主机可能配了 nginx:server_name yourdomain.com www.yourdomain.com; 没单独的重定向规则。两个都通但有重复内容问题。

怎么判断:SSH 到服务器看 nginx 配置。server_name 列了两个但没单独的重定向 server block 就是这条。

最短修复路径

第 1 步:选 canonical

SEO 上两个都行。选:

  • Apexyourdomain.com):想要更短 URL,且 DNS 提供商支持 ALIAS/ANAME。
  • wwwwww.yourdomain.com):CDN 上 CNAME 处理更方便。

选完写下并坚持。

第 2 步:配主机

Vercel — Project → Settings → Domains:

  • yourdomain.comwww.yourdomain.com 两个
  • 点非 canonical 那个 → “Redirect to” → 选 canonical
  • Vercel 自动签发 301

Netlify — Site settings → Domain management:

  • 加两个
  • 点 canonical 上的 “primary” toggle
  • Netlify 自动重定向另一个

Firebasefirebase.json

{
  "hosting": {
    "redirects": [
      { "source": "/(.*)", "destination": "https://yourdomain.com/:1", "type": 301 }
    ]
  }
}

(Firebase 如果要求独立 app,在非 canonical 站上配。)

Cloudflare — Rules → Redirects:

URL pattern: https://www.yourdomain.com/*
Forwarding URL: https://yourdomain.com/$1
Status: 301

第 3 步:验证

curl -sI https://www.yourdomain.com | head -5

应返回:

HTTP/2 301
Location: https://yourdomain.com/

返回 200 就是没配重定向。

第 4 步:更新 HTML canonical 标签

模板里 canonical 指向 canonical 版本:

<link rel="canonical" href="https://yourdomain.com/your-article/" />

不是 alternative 版本。

第 5 步:更新 Search Console

如果两个版本之前都分别验证过,Search Console 可能有两个 property。两个都留(监控仍有用),但把 canonical 当 primary。

重定向上线后,非 canonical property 的索引 URL 会逐渐减少。

第 6 步:等 Google 合并

2-4 周内,Google 把链接权重合并到 canonical。Search Console → Performance → Pages 显示非 canonical URL 减少。

哪些情况可能不是你操作错了

某些平台有特定怪癖(Firebase 的 primary-site 模型、Cloudflare 的 apex vs subdomain 处理)。平台行为跟文档不一致,附细节提工单。

容易误判的情况

只设 canonical link tag 不能阻止双服务。平台层 301 才能让 Google 合并理解。

预防建议

  • 任何新域名第一天就决定 www vs apex。
  • 永远在平台/CDN 层做重定向,不只是 canonical 标签。
  • 任何 DNS 或主机变更后用 curl -sI 重新验证一个版本 301 到另一个。
  • 团队管理的域名,在 DOMAIN.md 里记下 canonical 选择。

FAQ

  • www 还是 apex 更好? SEO 没差别。按技术偏好选。
  • 以后能切换吗? 能,但需要 301 链(老 canonical → 新 canonical)、canonical 标签更新、4-8 周让 Google 完全切换。别随便切。

相关阅读

标签: #域名 #DNS #SSL #排查 #重定向