@符号和www在主机记录里代表什么?域名解析参数说明
在域名解析的控制面板里,你一定会遇到一个叫“主机记录”或“主机名”的输入框。有人往里填@,有人填www,还有人直接留空。这三种填法有什么区别?填错了会导致什么后果?很多人在添加解析记录的时候,根本不清楚这些符号和前缀的含义,照着别人的截图抄,结果网站要么打不开,要么打开的是别人的站点。今天这篇文章,就把@符号、www、以及主机记录这个字段的规则彻底讲清楚。
主机记录是干什么的?
在开始之前,先明确一个基本概念:域名是有层级结构的。
www.example.com. 这个完整的域名,从右往左看:
- . 是根域(最顶层,通常省略不写)
- com 是顶级域
- example 是二级域(也叫主域名)
- www 是三级域(通常称为子域名或主机名)
所谓“主机记录”,要填的就是最左边那一级,也就是子域名的前缀部分。它决定了这条解析记录到底作用于哪个具体的子域名。
举个例子:如果你的主域名是 example.com,那么:
主机记录填 www → 这条记录针对 www.example.com
主机记录填 @ → 这条记录针对 example.com 本身(即不加任何前缀)
主机记录填 * → 这条记录针对所有未明确指定的子域名,比如 abc.example.com、xyz.example.com
主机记录填 mail → 这条记录针对 mail.example.com
主机记录填 api → 这条记录针对 api.example.com
理解了这一点,后面所有的内容都顺理成章了。
@符号:代表主域名本身
@在域名解析里是一个特殊的保留符号,它代表“主域名”本身,也就是不含任何前缀的裸域名。
当你在主机记录里填 @ 的时候,实际上是在告诉DNS系统:这条记录要生效的域名是 example.com,不是 www.example.com,也不是 abc.example.com,就是最原始的那个 example.com。
举个例子:你有一个网站,希望用户输入 example.com 就能访问,那么你需要添加一条主机记录为 @ 的A记录,指向你的服务器IP。
主机记录: @
记录类型: A
记录值: 192.0.2.1
这样,用户在浏览器里输入 example.com,DNS解析后就会指向 192.0.2.1。
需要注意的是,@符号的用法在不同DNS服务商那里略有差异:
阿里云/腾讯云/Cloudflare:直接在主机记录框里填 @,系统识别为裸域名。
某些老旧的DNS管理系统:可能要求把主机记录留空,或者填一个半角句号 . 来表示主域名。如果你不确定,可以看控制面板里的提示文字。
另外,@符号在同一个记录类型下只能存在一条。比如你不能同时添加两条主机记录为 @ 的A记录指向不同IP(除非你做负载均衡,但那需要多条记录配合权重,且大部分DNS不支持)。同样,MX记录、TXT记录也都可以用 @ 来作用于主域名本身。
www:仅仅是一个子域名
www本身没有任何特殊含义,它就是一个普普通通的子域名前缀,和你叫mail、api、blog完全一样。
没错,www不是必须的,也不是什么特殊保留字。它只是在早期互联网时代被广泛采用的一个习惯性前缀,用来标识这是一个Web服务。但到了今天,很多网站已经不再使用www前缀,直接用裸域名访问。
但www和@有一个关键区别:Cookie的作用域。
如果你用 example.com 登录网站,浏览器设置的Cookie默认对 example.com 和所有子域名(包括 www.example.com)都生效。但如果你用 www.example.com 登录,Cookie默认只对 www.example.com 这个子域名生效,不会传给 api.example.com 或 example.com。
这就是为什么很多网站会做301重定向:要么把 example.com 永久重定向到 www.example.com,要么反过来。目的就是把所有访问流量统一到一个域名上,避免Cookie混乱,同时也有利于SEO权重集中。
在解析配置上,@和www是两条独立的记录,需要分别添加:
记录1:
主机记录: @
记录类型: A
记录值: 192.0.2.1
记录2:
主机记录: www
记录类型: A
记录值: 192.0.2.1
两条记录指向同一个IP,这样无论用户输入 example.com 还是 www.example.com,都能访问到你的网站。至于要不要在Web服务器层面做301重定向,那是下一步的事情。
其他常见的主机记录写法
星号 *(泛解析)
主机记录填 *,表示泛解析,即所有未明确指定的子域名都指向同一个目标。
比如你设置了 *.example.com 指向 192.0.2.1,那么:
anything.example.com → 192.0.2.1
test.example.com → 192.0.2.1
random123.example.com → 192.0.2.1
但是 www.example.com 如果已经有单独的A记录,则以单独记录为准,不会走泛解析
泛解析的典型应用场景:多用户博客平台(每个用户分配一个子域名)、SAAS服务的多租户路由、或者你懒得为每个子域名单独添加记录的情况。
注意:泛解析不能和 @ 混为一谈。@ 只针对裸域名,* 针对的是所有子域名,二者作用范围不同。
留空(空主机名)
在某些DNS系统里,留空就等同于 @,代表主域名。但这不是统一标准,有些系统留空会报错,有些系统会把留空当成无效输入。最保险的做法:明确填写@,而不是依赖“留空等于裸域名”这个隐含规则。
纯数字或字母(自定义子域名)
主机记录可以填任意字母、数字、连字符的组合,只要符合域名命名规范,长度不超过63个字符即可。比如 mail、ftp、blog、api-v2、test-2026 都是合法的。
每一个这样的主机记录,都会创建一个对应的子域名,独立解析,互不影响。
主机记录在不同记录类型中的特殊行为
在CNAME记录中,主机记录不能是@。
这是很多新手踩过的坑。CNAME规定,如果有其他记录(特别是SOA和NS)已经占用了这个主机名,就不能再给它添加CNAME。而裸域名(@)通常已经有SOA记录和NS记录,所以大多数DNS服务商禁止在 @ 上设置CNAME。
解决办法:如果你想让 example.com 指向另一个域名(比如CDN的域名),需要看你的DNS服务商是否支持 ALIAS记录 或 ANAME记录。这两种记录可以实现和CNAME类似的功能,但可以在裸域名上使用。Cloudflare有CNAME Flattening技术,阿里云有“显性URL转发”来绕开这个限制,具体看你用的服务商。
在MX记录中,@和子域名的含义截然不同。
如果你在 @ 上设置了MX记录,意思是 @example.com 这个域名收到的邮件由某台邮件服务器处理。
如果你在 mail 上设置了MX记录,意思是 mail.example.com 这个子域名收到的邮件由某台邮件服务器处理——这是完全不同的两条线。
绝大多数企业邮箱配置,MX记录都填在 @ 上,因为你要收的是 @example.com 后缀的邮件,而不是 @mail.example.com。
主机记录和URL转发是两回事
这是最常见的混淆点。域名解析里的主机记录配置的是DNS层面的映射,只负责把域名转成IP。而URL转发(也叫显性转发或隐性转发)是HTTP层面的行为,由Web服务器或CDN节点响应301/302重定向来实现跳转。
举个例子:
你在DNS里给 www.example.com 加了一条A记录指向 192.0.2.1,然后在服务器上配置Nginx把 www.example.com 重定向到 example.com。
这两个动作分工不同,缺一不可。DNS负责让用户找到你的服务器,Nginx/Web服务器负责让用户从www跳到裸域名。
如果你只是在DNS里设置了CNAME把 www.example.com 指向 example.com,但服务器上没做任何重定向配置,用户浏览器地址栏里依然是 www.example.com,并没有发生跳转。CNAME只是让两个域名解析到了同一个IP而已,URL本身不会变化。
CN
EN