Web 站点是否使用 www的最佳实践

本文讲述了一个很常见但容易被低估的问题:网站到底该用 www.example.com,还是直接用 example.com

实践结论

  • www 和不带 www 没有天然优劣,二者在协议层面都只是一个主机名。
  • 真正重要的是:全站只保留一个主域名作为规范地址(canonical host),其余入口全部 301 跳转过去。
  • 对搜索引擎、浏览器、CDN、证书、日志统计来说,最关键的是“一致性”,不是“www 本身”。

1. 基本概念

在 HTTP URL 里,http://https:// 后面的第一段就是 host,也就是域名主机名。www.example.comexample.com 都是合法 host。

从 URI 规范看,host 只是 URI 的一个组成部分,语义上是大小写不敏感的注册名;DNS 名称则由 label 组成,www 只是最左侧的一个子域名标签。

这意味着:

  • www.example.com 不是“更正式”的域名。
  • example.com 也不是“更高级”的域名。
  • 它们是两个不同的 URL host,除非你主动做统一,否则搜索引擎和用户都可能把它们当成两个入口。

2. 先给结论:推荐怎么做

推荐原则

  1. 选一个作为主域名。
  2. 另一个做 301 永久跳转。
  3. 页面内所有绝对链接、站点地图、规范标签、Open Graph 地址都统一到主域名。
  4. 搜索控制台和监控里同时保留两个入口,但只让一个版本参与索引。

常见选择

  • 偏传统、偏大型站点、偏 CDN/多机房场景:通常选 www.example.com
  • 偏品牌、偏极简、偏单站点展示:通常选 example.com

我的建议

如果你没有强烈业务约束,优先按下面的标准来选:

  • 如果未来可能接多台源站、多个子系统、多个地域、多个独立应用,选 www
  • 如果你希望域名最短、品牌最干净,且站点结构简单,选不带 www

真正要避免的是“两个都能直接访问且都返回 200”。

3. 为什么必须统一一个主域名

3.1 SEO 与重复内容

Google 明确说明,同一个网站可能通过多个 URL 访问;这时搜索引擎会尝试选择一个 canonical URL。站长应该帮助搜索引擎明确哪个 URL 是主版本。

如果 www 和非 www 都返回同样内容:

  • 可能形成重复内容
  • 外链权重可能分散
  • 索引和统计可能分裂
  • 站点地图和站内链接如果不统一,会进一步放大混乱

Google 还明确建议,站点所有规范化手段要保持一致,不要在 sitemap、rel=canonical、跳转规则里互相打架。

3.2 浏览器和用户体验

用户通常不关心 www 是否存在,但很容易注意到:

  • 书签地址不一致
  • 登录态在两个 host 间表现不一致
  • Cookie 作用域没配好时,两个版本可能出现“明明是同站点,却像两个站”

3.3 运维和统计

如果不统一:

  • Nginx / CDN 日志会分成两份
  • Search Console 数据会分成两份
  • 访问分析、告警、黑名单规则、缓存命中率都更难看

4. 权威资料怎么说

4.1 Google Search Central

Google Search Central 说明:

  • 一个页面可能对应多个 URL
  • Google 会尝试识别 canonical URL
  • 站点所有 canonical 化方法应该保持一致
  • 不推荐用 noindex 来解决同站重复 URL 问题,rel=canonical 更适合

这对 www 和非 www 的问题本质上就是同一类问题:两个主机名对应同一内容时,应该明确主版本并统一出口。

4.2 Google 对 www / non-www 的历史说明

Google 早期就明确提到:

  • https://www.example.com/ 和 https://example.com/ 可能指向同一位置
  • 但搜索引擎不能自动假定它们一定相同
  • 如果两个版本都存在,最好只提交一个版本的网站地图

这意味着对搜索引擎来说,“你有没有做统一”比“你选了哪个”更重要。

4.3 MDN 的建议

MDN 专门写过 www 与非 www 的选择指南,核心观点很实用:

  • 两者都能用
  • 最重要的是让站点在技术上对两种访问都工作
  • 再通过规范标签、重定向等方法把其中一个作为标准版本

4.4 Cloudflare 的实践建议

Cloudflare 的文档直接把 www 和 apex 域名之间的 301 跳转做成了标准操作示例:

  • www.example.com -> https://example.com
  • example.com -> https://www.example.com

这说明在真实线上环境里,主机名统一不是理论问题,而是最常见的基础运维动作。

5. 选 www 还是不选 www

5.1 选 www 的优点

  • 更容易做未来扩展
  • 更容易和 apex 域名分离出 Cookie、静态资源、API 子域
  • 传统上更方便做负载均衡和多机房架构
  • 某些 DNS 提供商对 apex 域名的能力限制更复杂,而 www 是标准子域名,配置更灵活

5.2 选不带 www 的优点

  • URL 更短
  • 更像“品牌主页”的表达
  • 用户复制、输入和展示都更简洁
  • 对纯展示型站点、单体博客、轻量官网比较直观

5.3 怎么选更稳妥

可以直接用下面这条原则:

  • 单站、少子域、强品牌展示:选 apex
  • 中大型站点、未来会扩展子域、会接 CDN/多源站:选 www

如果你现在犹豫不决,通常说明你的站点未来会扩展。此时更适合选 www,因为它更容易留出架构空间。

6. 规范化设计的标准做法

6.1 301 跳转

核心要求:

  • 从非主域名到主域名,使用 301
  • 保留路径
  • 保留 query string
  • 不要使用 302 作为常态

示例:

  • https://example.com/a/b?q=1 -> https://www.example.com/a/b?q=1
  • https://www.example.com/a/b?q=1 -> https://example.com/a/b?q=1

6.2 rel="canonical"

页面 <head> 中要输出规范链接,指向主域名版本。

例如:

<link rel="canonical" href="https://www.example.com/article/abc" />

如果你决定主域名是 apex,就写:

<link rel="canonical" href="https://example.com/article/abc" />

注意:

  • canonical URL 要和站点实际跳转目标一致
  • canonical 不要一会儿指 www,一会儿指非 www

6.3 Sitemap 只保留一个版本

站点地图里的 URL 必须统一成主域名,不要混写两个 host。


错误示例:

  • https://example.com/a
  • https://www.example.com/a

正确示例:

  • 全部都用一个版本

6.4 站内链接统一

全站内部链接建议统一输出绝对主域名,或者统一输出相对路径。

优先级建议:

  • 页面内导航和 SEO 相关链接:用主域名绝对地址
  • 内容正文中的内部跳转:可以用相对路径,减少迁移成本

6.5 证书与 HTTPS

无论你选 www 还是 apex,都要保证 HTTPS 证书覆盖你的实际访问域名。

常见情况:

  • 证书覆盖 example.com 和 www.example.com
  • 或者使用通配符证书覆盖 *.example.com,再加上 apex 单独 SAN

注意:通配符证书通常只覆盖一个子域层级,所以 *.example.com 能覆盖 www.example.com,但不能自动覆盖 www.blog.example.com

6.6 Cookie 域作用域

如果站点登录态、用户态、灰度或 AB 测试依赖 Cookie,要提前想清楚:

  • Cookie 只给主域名
  • 还是给 .example.com 这种跨子域作用域

如果你把 www 当主站,并且未来有 api.example.comadmin.example.comstatic.example.com,Cookie 作用域要更明确地设计。

7. 最佳实践证明链

这里把“为什么这么做”串成一条最实用的证明链。

7.1 协议层证明

RFC 3986 把 host 作为 URI 的独立组成部分,host 是区分资源的关键部分。

这说明:

  • www.example.com 和 example.com 在协议层就是不同 host
  • 如果你不做统一,客户端、搜索引擎、缓存系统都可能把它们当作不同入口

7.2 搜索引擎层证明

Google 说明同一内容可通过多个 URL 访问时,应该明确 canonical。

这说明:

  • 主域名选择不是审美问题
  • 它是搜索引擎归一化问题

7.3 工程层证明

Cloudflare 提供了直接的 www -> apex 和 apex -> www 的 301 重定向示例。

这说明:

  • 行业默认做法不是“同时保留两边”
  • 而是“先选一个,再统一把另一个导过去”

7.4 运维层证明

Google 早就提醒,两个版本的站点统计可能分散;可以在 Search Console 里都添加,但 sitemap 只能提交一个版本。

这说明:

  • 统计、监控、诊断都需要单一主版本
  • 保留双入口只适合兼容,不适合索引和统计

8. 推荐实施方案

方案 A:主域名选 www

适合:

  • 企业官网
  • CMS/内容站
  • 未来可能扩展子域名的项目

部署要求:

  • example.com 301 到 www.example.com
  • 站点地图、canonical、OG URL 全部用 www
  • Cookie 域名策略单独设计

方案 B:主域名不带 www

适合:

  • 个人博客
  • 产品落地页
  • 简洁品牌站

部署要求:

  • www.example.com 301 到 example.com
  • 站点地图、canonical、OG URL 全部用 apex
  • 注意根域名的 DNS 和证书配置

9. 在你这个项目里怎么落地

  1. 先确认站点主域名到底是 www 还是非 www
  2. 统一 Site.URL
  3. 统一 canonical
  4. 统一 sitemap
  5. 统一后台配置、主题配置、内容导入数据里的绝对链接
  6. 在反向代理/CDN 层做 301

10. 反向代理 / CDN 示例

Nginx 示例:非 www 跳转到 www

server {
    listen 80;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

Nginx 示例:www 跳转到非 www

server {
    listen 80;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

Cloudflare 规则思路

  • 匹配源 host
  • 保留 path
  • 保留 query string
  • 返回 301

11. 常见错误

  • 两个域名都返回 200
  • 301 了首页,却没 301 子路径
  • canonical 指向一个域名,sitemap 却是另一个域名
  • OG URL、RSS 链接、邮件通知链接还在混用两个 host
  • 证书只配了一个 host,另一个 host 访问会报 TLS 错误
  • Cookie 域名没设计好,登录态在两个 host 之间丢失

12. 快速检查清单

  • 主域名只选一个
  • 另一个域名全站 301
  • 保留路径和 query string
  • 页面 <head> 输出正确 canonical
  • Sitemap 只保留一个 host
  • 内链统一
  • 证书覆盖实际访问域名
  • Cookie 作用域与子域策略一致
  • Search Console 两个版本都加,但只提交一个版本的 sitemap

13. 最终建议

如果你是新项目:

  • 想做长线、可扩展站点,选 www
  • 想做极简品牌站,选不带 www

如果你是已有项目:

  • 不要纠结“哪个更高级”
  • 先选一个作为标准,再把另一边彻底规范化跳转过去

真正的最佳实践不是 www 或非 www,而是:

  • 单一规范主机名
  • 全站一致化
  • 301 永久跳转
  • canonical / sitemap / 内链 / 证书 / Cookie 全部对齐
本文地址: https://www.vvcms.cn/blog/294
版权所有 © admin 未经授权不得转载