2026 年 www vs 根域名几乎纯粹是审美——直到你不小心两边都发了同样内容,Google 就看到两个站、各有一份权威。决策小,执行必须准——DNS、host、canonical 标签、Search Console 四处对齐。
问题背景
历史上 www 是个 hostname 约定指向 web 服务器,根域名可能指向邮件、FTP 等。现代托管把这个塌缩了——两个都能指向同一个 web 服务。关键是选一个做规范,另一个 301 重定向过来,让搜索引擎、浏览器、复制粘贴的用户都收敛到一个上。
判断标准
https://yoursite.com和https://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 管。
实操步骤
-
决定并写下来。 新站默认 apex。已有
www站且外链多就留www。 -
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
-
host 里把一个标 primary。 Vercel:Project → Domains → 把
yoursite.com设 Primary,www.yoursite.com自动 301。Firebase:Hosting → Custom domains → 设跳转方向。 -
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
- 每页 canonical 指主域。 Astro layout 里:
<link rel="canonical" href={`https://yoursite.com${Astro.url.pathname}`} />
部署后验证:
grep -R 'rel="canonical"' dist | grep -v 'https://yoursite.com' | head
# 有输出 = 漏到非主域
-
Search Console 加主域为 property。 用 Domain property(TXT)覆盖 apex 和
www,sitemap 提交的 URL 用主域。 -
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://www → https://apex 不应经过 http://apex 或 https://www。
- 更新你能改的外链(社媒资料、GitHub README、邮件签名)。301 处理搜索引擎可见的入站链接;人眼看得到跳转闪一下。
执行检查清单
- DNS 同时有 apex 和
www记录,最终指同一 host。 - host 的 “primary domain” 与所选主域一致。
curl -sI显示非主域到主域一跳 301。- 每页 canonical 指主域。
- Search Console Domain property + sitemap 用主域。
上线后验证
dig +short A yoursite.com和dig +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://www→http://apex→https://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