根域名和 www 怎么选

根 vs www 看似审美——两边都发同一内容就出事。用这套 DNS 表、跳转配置和 curl 验证一次锁定。

2026 年 www vs 根域名几乎纯粹是审美——直到你不小心两边都发了同样内容,Google 就看到两个站、各有一份权威。决策小,执行必须准——DNS、host、canonical 标签、Search Console 四处对齐。

问题背景

历史上 www 是个 hostname 约定指向 web 服务器,根域名可能指向邮件、FTP 等。现代托管把这个塌缩了——两个都能指向同一个 web 服务。关键是选一个做规范,另一个 301 重定向过来,让搜索引擎、浏览器、复制粘贴的用户都收敛到一个上。

判断标准

  • https://yoursite.comhttps://www.yoursite.com 都能加载站点(之间没重定向)。
  • Search Console 两个 property,或者同一内容的曝光分裂。
  • 外链一半指 root 一半指 www
  • canonical 标签指向另一版本。
  • dig +short 两个 hostname 各自独立返回 IP。

快速结论

选一个——多数现代独立站选根域名(yoursite.com),更短、更符合输入习惯。另一个 301 重定向到所选。DNS、host、canonical 标签三处保持一致。

开始前准备

  • 改之前 24 小时把 DNS TTL 调到 300s。
  • 选好主域(apex 或 www),写下来。
  • 知道 DNS 是 registrar 管还是 Cloudflare 管。

实操步骤

  1. 决定并写下来。 新站默认 apex。已有 www 站且外链多就留 www

  2. DNS 两个都加记录,最终解析到同一处。 apex 主、典型 host:

Type   Name        Value                            TTL
A      @           76.76.21.21      (host anycast)    300
A      @           76.76.21.22                        300
CNAME  www         cname.vercel-dns.com.              300

Firebase 风格:

Type   Name        Value                            TTL
A      @           199.36.158.100                    300
A      @           199.36.158.101                    300
CNAME  www         your-project.web.app.             300
  1. host 里把一个标 primary。 Vercel:Project → Domains → 把 yoursite.com 设 Primary,www.yoursite.com 自动 301。Firebase:Hosting → Custom domains → 设跳转方向。

  2. host 不自动跳转(Cloudflare 前置)时,加 Page Rule 或 Redirect Rule:

# Cloudflare Bulk Redirects(CSV 导入)
source_url,target_url,status,preserve_query_string,preserve_path_suffix
https://www.yoursite.com/*,https://yoursite.com/$1,301,true,true

或者 Cloudflare Redirect Rules UI:

当请求匹配
  Hostname 等于  www.yoursite.com

  类型:         Static
  URL 重定向: https://yoursite.com${uri.path}${uri.query}
  状态码:      301
  保留 query string: ON
  1. 每页 canonical 指主域。 Astro layout 里:
<link rel="canonical" href={`https://yoursite.com${Astro.url.pathname}`} />

部署后验证:

grep -R 'rel="canonical"' dist | grep -v 'https://yoursite.com' | head
# 有输出 = 漏到非主域
  1. Search Console 加主域为 property。 用 Domain property(TXT)覆盖 apex 和 www,sitemap 提交的 URL 用主域。

  2. curl 验证跳转:

curl -sI https://www.yoursite.com         | head -3
# HTTP/2 301
# location: https://yoursite.com/

curl -sI http://yoursite.com              | head -3
# HTTP/1.1 301 Moved Permanently
# Location: https://yoursite.com/

curl -sI https://yoursite.com             | head -3
# HTTP/2 200

理想是一跳:http://wwwhttps://apex 不应经过 http://apexhttps://www

  1. 更新你能改的外链(社媒资料、GitHub README、邮件签名)。301 处理搜索引擎可见的入站链接;人眼看得到跳转闪一下。

执行检查清单

  • DNS 同时有 apex 和 www 记录,最终指同一 host。
  • host 的 “primary domain” 与所选主域一致。
  • curl -sI 显示非主域到主域一跳 301。
  • 每页 canonical 指主域。
  • Search Console Domain property + sitemap 用主域。

上线后验证

  • dig +short A yoursite.comdig +short A www.yoursite.com 都能解析。
  • 两个 URL 各跑 Lighthouse——一个 200、一个显示跳转。
  • 4 周后 Search Console Performance 显示流量只在主域上。

容易踩的坑

  • 根域名和 www 都发同一内容、互不重定向——Google 眼里就是重复内容。
  • 根和 www 指向不同 build(一个 staging 一个 prod)——重定向配错常见。
  • 选了 www 又发现一半 DNS 文档默认根域名——配出错记录。
  • canonical 标签和实际地址不一致——根域名页面 canonical 写 www 或反过来。爬虫困惑。
  • 一个版本提 Search Console,另一个版本做 canonical——选一个全用一个。
  • 多跳跳转(http://wwwhttp://apexhttps://apex)信号损耗。永远一跳。

FAQ

  • Google 在意我选哪个吗?: 不在意,只要选一个、另一个 301。混合信号才伤。
  • www 过时了吗?: 审美上是,多数新站不用。技术上完全没问题,甚至 DNS 灵活性略好(子域名 CNAME 普适支持)。
  • 后面能换吗?: 能,但当迷你域名迁移办——配 301、更新 Search Console、改 canonical。恢复期会有小幅 SEO 波动。
  • Host 只支持一个怎么办?: 现代 host 多数两个都支持并自动重定向。不支持就换 host 或用 Cloudflare 前置做重定向。
  • Cloudflare CNAME flattening 在 apex 上行吗?: 行,是 host 要求 CNAME、registrar 不让在 @ 设 CNAME 时的标准做法。

相关阅读

标签: #独立开发 #域名 #DNS #Canonical #SEO