www.是子域名,http://是协议;网站需输www.才能打开是因为DNS未解析裸域或服务器未监听裸域,且裸域不能设CNAME记录;应统一主入口并301跳转,Cookie设裸域确保共享,HTTPS证书需同时包含裸域和www域名。

当你在浏览器地址栏输入一个网址时,是否思考过为什么有的网站必须加 www.,有的却直接以域名开头?这不仅影响用户访问体验,更关系到服务器配置、Cookie作用域、CDN分发和搜索引擎收录逻辑。
http:// 和 www. 的本质不是同一类东西
先明确一个关键事实:【http:// 是协议,www. 是子域名】。协议决定“怎么传”,子域名决定“传给谁”。没有 http://(或 https://),浏览器根本不知道该用哪种方式发起请求;而没有 www.,只要 DNS 解析正确、服务器配置允许,照样能打开网站。
比如访问 http://example.com 和 http://www.example.com,表面上只是多两个字符,背后却是两套完全独立的 DNS 记录与可能不同的服务器响应——它们甚至可以指向不同物理机器、不同内容、不同 SSL 证书。
为什么有些网站必须输 www. 才能打开?
方法一:DNS 解析未覆盖根域名
很多老系统只给 www.example.com 配置了 A 或 CNAME 记录,但没给 example.com(即裸域)设置解析。此时浏览器请求 http://example.com 会因 DNS 查询失败而报错“无法连接服务器”。
方法二:Web 服务器未监听根域名
即使 DNS 能解析到 IP,若 Nginx/Apache 的虚拟主机配置中只写了 server_name www.example.com;,没写 server_name example.com;,那么对 http://example.com 的请求将被默认 server 块接管,可能返回 404 或错误页面。
【注意:裸域(如 example.com)不能使用 CNAME 记录做 DNS 解析,这是 RFC 1034 强制规定】。所以若想用 CDN 或云服务代理裸域,必须用 ALIAS/ANAME 类型记录(部分 DNS 提供商支持),否则只能靠 A 记录直连 IP。
www. 和裸域共存时的实际处理策略
第一步:确定主入口
选择 www.example.com 或 example.com 其中一个作为唯一官方地址,避免 SEO 分散权重。Google 明确建议固定一种形式并全站 301 跳转。
第二步:配置 HTTP 重定向
在 Web 服务器上强制跳转:比如用户访问 http://example.com/path,自动 301 重定向至 http://www.example.com/path。Nginx 示例配置:
server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; }
第三步:Cookie 域名范围统一
若 Cookie 设置为 Domain=example.com,它对 www.example.com 和 api.example.com 都生效;但若设为 Domain=www.example.com,则 example.com 无法读取。因此主域应设为裸域(example.com),确保子域名间共享登录态。
HTTPS 场景下 www. 与裸域的证书要求
方法1:单域名证书
仅覆盖 www.example.com,不包含 example.com。用户访问裸域会触发浏览器“您的连接不是私密连接”警告。
方法2:通配符证书
购买 *.example.com 证书,自动涵盖所有一级子域名(www、api、admin),但【仍不包含裸域 example.com】。需额外单独添加裸域到 SAN(Subject Alternative Name)列表中。
方法3:多域名(SAN)证书
最稳妥方案:证书同时包含 example.com 和 www.example.com。Let’s Encrypt 免费证书默认支持此方式,签发命令中加入 -d example.com -d www.example.com 即可。

















