你的域名前要加www吗?

一些历史背景

即便人们经常将“域名”(domain name)和“主机名”(host name)两个术语交替使用,然而他们是有区别的,不仅仅是语义上的区别。我简要的说明一下:

作为一名IT管理员,你的网络就是你的域。现在需要给这个域命名,以及搭配相应的域名服务,因此你注册了一个域名,比如“example.com”。现在你的域下面有很多的主机。每一个接入网络的机器都被认为是一个主机。在你的域下提供万维网文档服务的机器自然得到了“www”这个主机名,因此这个主机的全称是“www.example.com”。网络中其他提供服务的主机也是如此,不论是否提供web服务。主机就是这样在网络中进行组织的。

你如果要访问域名“example.com”中的web服务器,应该使用名字“www.example.com”指向相应的主机。在interwebs的远古时代,没有虚拟主机这回事。所有的web服务器都只架设一个网站(或者是每个IP地址)。这个时候使用什么主机名是无关紧要的,只要指向了正确的IP地址。

“裸域名”,也就是不带“www”的域名,例如“example.com”用DNS的术语来说被称为“the origin”。在1990年代万维网变得流行时,一些管理员开始将origin指向www主机的IP地址。这使得网站访问者只需要在浏览器中输入“example.com”即可,而不是主机的全名“www.example.com”。

SEO来了

既然origin“example.com”和主机名“www.example.com”可以指向不同的IP地址—并且从1997年1月开始同一个IP地址可以假设不同的网站—了解SEO的人就开始告诉我们需要选择一个canonical主机名并且其他人应该指向那里(使用HTTP 301的返回码)。

虽然听起来有道理,然而应该选择哪个呢?对于SEO来说这无所谓,只要你选择一个即可。但是还有除了SEO之外需要处理的问题。

人们对URL的理解

世纪之交时我在一个市场代理机构工作,我注意到当我省略"www"部分时,人们不能理解这是一个万维网地址。我的意思是,我们现在都开始省略"http://"了。当然由于习惯使然,我个人还是会使用“正确”的主机全称,比如“www.example.com”。

今天我不觉得这是一个问题。只要你使用了常用的顶级域名,不使用www人们依然知道这是一个网址。毕竟一个版本会指向另一个,无所谓你的canonical主机名是“www.example.com”但是你在打印广告时却使用了更好看的“example.com”。如果你使用了最新的顶级域名,比如.beer,那么还是需要带上www的。

不带www更清爽

不得不承认,“example.com”更易于输入,更易读(毕竟“www”不容易一口气读完)并且占用了更少的空间。这也不难理解人们开始抛弃www,仅仅使用origin作为canonical主机名。

那为什么还讨论带不带www呢?

那我们为啥还争论不休呢?大家爱咋咋地不好吗?当然好。

但是作为一个网站的管理网,你当然想要做出更审慎的选择不是吗。因为正如互联网上的很多东西,人们开始使用时并没有经过深思熟虑。例如cookies。

Cookies会向子域名传播

cookies是以主机为单位设置的,并且同样会传递给所有的子域名。例如,如果网站“example.com”设置了一个cookie,那么在访问“www.example.com”时浏览器会带上这个cookie。看起来不错,毕竟这是同一个网站,对吗?但是cookie同样也会发送给“cdn.example.com”,“email.example.com”,“intranet.example.com”,“thirdpartyservice.example.com”等等。并且很多第三方服务允许你这样使用你的域名。

“www.example.com”设置的cookie则不会发送给任何上述兄弟主机。浏览器明白他们不是“子服务”而是完全不同的服务,所以不应该访问你的cookies。

不必要的cookies影响性能

根据HTTP的工作原理,浏览器向web服务器发送每个请求时都会带上cookie。也就是说origin(“example.com”)设置的cookie会发送给“email.example”或者“intranet.example.com”。这样会减慢通讯速度影响体验。

cookies可以被第三方读取

因此,如果你的网站位于origin(“example.com”)并且你登陆了CMS,CMS会在浏览器中种下一个cookie保持你至少在一个session里保持登陆状态。然后当你访问“someinternalservice.example.com”时,该服务的管理员可以读取这个cookie,然后可以复制出来以你的身份登陆CMS。登陆其他的服务也是同样的风险。

如果你在意“example.com”上的安全,请在前面加上"www"。如果这还不能帮助你决定是否使用www,我不知道还有什么可以。只要cookie是那个关键的部分,不管是HTTPS或者2FA都不能保证安全。当然其他的安全措施,例如IP限制可以帮上忙。

子域名中的Cookies也可以分享

现在,假如你在一个子域名上提供了服务,如“sso.example.com”,RFC 6256允许你将设置的cookie分享给“example.com”或者“www.example.com”。因此避免使用“裸域名”作为主机名,这样其实提供了更多灵活性。

DNS origin不能作为CNAME

谈到灵活性,我们就需要再说说DNS。

DNS中有一个限制是origin必须是A类型的记录,也就是说只能指向一个固定的IP地址。

当你的网站变得很大并且要迁移到一个托管的服务中,或者需要指向Web应用防火墙或者一个DDoS缓和器中,你可能需要一个CNAME类型的记录,将主机名指向另一个由供应商根据你的流量和需求管理的更灵活的的主机。

如果你的网站架设在origin(“example.com”)上,那么你没法做到这点。然而如果将www主机名作为一个CNAME记录就不会有问题了。如果你需要网站具备可扩展的灵活性,应该从一开始就是用www主机名。

结论:使用www

是否使用www很重要。我也赞同裸域名看起来更好,但是那只是浏览器地址栏的现实问题。你可以使用"www.example.com"作为你的canonical主机名,但是在其他地方,可以仅仅使用裸域名,会将用户重定向到正确的地方。

还有其他重要的原因使得你需要使用www,性能更优,更具安全性和灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值