多年来,我们的地址栏上一直在进行着一场小小的较真战。也就是Google、Instagram和Facebook 等品牌。该群组已选择重定向
example.com
至www.example.com
。相反:GitHub、DuckDuckGo和Discord。该组织选择执行相反的操作并重定向www.example.com
到example.com
"WWW"属于 URL 吗?一些开发人员对此主题持有强烈的意见。在了解了一些历史之后,我们将探讨支持和反对它的论据。
WWW是什么?
WWW代表"World Wide Web"
,是上世纪80年代晚期的一个发明,引入了浏览器和网站。使用"WWW"的习惯源于给子域名命名的传统:
- 一个位于
www.example.com
的Web服务器 - 一个位于
ftp.example.com
的FTP服务器 - 一个位于
irc.example.com
的IRC服务器
如果没有WWW会发生什么问题?
1. 向子域名泄露cookies
反对"没有WWW"
的域名的批评者指出,在某些情况下,subdomain.example.com
可以读取example.com
设置的cookies
。如果你是一个允许客户在你的域名上运营子域名的Web托管提供商,这可能是不希望看到的。
然而,这种行为只存在于Internet Explorer中。
RFC 6265标准化了浏览器对cookies的处理,并明确指出这种行为是错误的。
另一个潜在的泄露源是example.com设置的cookies的Domain值。如果Domain值明确设置为example.com,那么这些cookies也将被其子域名所访问。
Cookie 值 | 暴露于 example.com | 暴露于 subdomain.example.com |
---|---|---|
secret=data | ✅ | ❌ |
secret=data; Domain=example.com | ✅ | ✅ |
总之,只要你不明确设置Domain值
,而且你的用户不使用Internet Explorer
,就不会发生cookie泄露。
2. DNS的困扰
有时,"没有WWW"的域名可能会使你的域名系统(DNS)设置复杂化。
当用户在浏览器的地址栏中输入example.com时,浏览器需要知道他们想访问的Web服务器的Internet协议(IP)地址。浏览器通过你的域名的域名服务器向其DNS服务器(通常间接通过用户的互联网服务提供商(ISP)的DNS服务器)请求IP地址。如果你的域名服务器配置为响应包含IP地址的A记录,那么"没有WWW"的域名将正常工作。
在某些情况下,你可能希望使用规范名称(CNAME)记录来代替为你的网站设置。这样的记录可以声明www.example.com
是example123.somecdnprovider.com
的别名,这会告诉用户的浏览器去查找example123.somecdnprovider.com
的IP地址,并将HTTP请求发送到那里。
请注意,上面的示例使用了一个WWW子域名
。对于example.com
,不可能定义一个CNAME记录。根据RFC 1912,CNAME记录不能与其他记录共存。如果你尝试为example.com
定义CNAME记录,example.com
上的MX(邮件交换)记录将无法存在。因此,就不可能在@example.com上接收邮件
。
一些DNS提供商可以让你绕过这个限制。Cloudflare称其解决方案为CNAME解析。通过这种技术,域名管理员配置一个CNAME记录,但他们的域名服务器将暴露一个A记录。
例如,如果管理员为example.com
配置了指向example123.somecdnprovider.com
的CNAME记录,并且存在一个指向1.2.3.4
的example123.somecdnprovider.com
的A记录,那么Cloudflare
就会暴露一个指向1.2.3.4
的example.com的A记录。
总之,虽然这个问题对希望使用CNAME
记录的域名所有者来说是有效的,但现在有一些DNS提供商提供了合适的解决办法。
没有WWW的好处
大部分反对WWW的论点是实用性或外观方面的。"无WWW"的支持者认为example.com
比www.example.com
更容易说和输入(对于不那么精通技术的用户可能更不容易混淆)。
反对WWW子域名的人还指出,去掉它会带来一种谦虚的性能优势。网站所有者可以通过这样做每个HTTP请求节省4个字节。虽然这些节省对于像Facebook这样的高流量网站可能会累积起来,但带宽通常并不是一种紧缺的资源。
有"WWW"的好处
支持WWW的一个实际论点适用于使用较新顶级域的情况。例如,www.example.miami
在example.miami
无法立即被识别为Web地址。对于具有诸如.com这样的可识别顶级域的网站,这不是一个太大的问题。
对搜索引擎排名的影响
目前的共识是你的选择不会影响你的搜索引擎表现。如果你希望从一个URL迁移到另一个URL,你需要配置永久重定向(HTTP 301)而不是临时重定向(HTTP 302)。永久重定向确保你旧的URL的SEO价值转移到新的URL。
同时支持两者的技巧
网站通常会选择example.com
或www.example.com
作为官方网站,并为另一个配置HTTP 301重定向。理论上,可以支持www.example.com和example.com两者
。但实际上,成本可能会超过效益。
从技术角度来看,你需要验证你的技术栈是否能够处理。你的内容管理系统(CMS)或静态生成的网站需要将内部链接输出为相对URL以保留访问者的首选主机名。除非你可以将主机名配置为别名,否则你的分析工具可能会将流量分别记录在两个主机名上。
最后,你需要采取额外的措施来保护你的搜索引擎表现。谷歌将把URL的"WWW"
和"非WWW"
版本视为重复内容。为了在其搜索索引中去重复内容,谷歌将显示它认为用户更喜欢的那个版本------不论是好是坏。
为了在谷歌中保持对自己的控制,建议插入规范链接标签。首先,决定哪个主机名将成为官方(规范)主机名。
例如,如果你选择了www.example.com,则必须在 https://example.com/my-article
里的 <head>
上的标记 中插入以下代码段:
html
<link href="<https://www.example.com/my-article>" rel="canonical">
这个代码片段告诉谷歌"无WWW"变体代表着相同的内容。通常情况下,谷歌会在搜索结果中偏好你标记为规范的版本,也就是在这个例子中的"WWW"变体。
总结
对于是否在URL中加入"WWW",人们有不同的观点。下面是支持和反对的论点:
支持"WWW"的论点:
- 存在子域名的安全性问题:某些情况下,子域名可以读取主域名设置的cookies。虽然这个问题只存在于Internet Explorer浏览器中,并且已经被RFC 6265标准化修复,但仍有人认为使用"WWW"可以避免潜在的安全风险。
- DNS配置的复杂性:如果你的域名系统(DNS)配置为响应包含IP地址的A记录,那么"没有WWW"的域名将正常工作。但如果你想使用CNAME记录来设置规范名称,那么"没有WWW"的域名可能会导致一些限制,例如无法同时定义CNAME记录和MX(邮件交换)记录。
- 对搜索引擎排名的影响:对于使用较新顶级域的网站,使用"WWW"可以帮助识别网址,而不是依赖可识别的顶级域名。然而,目前的共识是选择是否使用"WWW"对搜索引擎表现没有直接影响。
支持去除"WWW"的论点:
- 实用性和外观:去除"WWW"可以使域名更简洁和易于输入,减少了用户可能混淆的机会。
- 节省字节:去除"WWW"可以每个HTTP请求节省4个字节。虽然这对于高流量网站来说可能是一个可累积的优势,但对于大多数网站来说,带宽通常不是一个紧缺的资源。
最佳实践: 一般来说,网站会选择将example.com或www.example.com作为官方网址,并对另一个进行重定向。你可以通过使用HTTP 301永久重定向来确保旧URL的SEO价值转移到新URL。同时,你还可以在页面的标签中插入规范链接标签,告诉搜索引擎两个URL代表相同的内容,以避免重复内容问题。
需要注意的是,在做决策时要考虑到技术栈的支持能力、DNS配置的限制和谷歌对搜索排名的处理方式。