www之争

双 11 终于过去了,今天我把网站的重定向进行了修改,主要就是修改 www 的问题,把没有 www 的网址自动添加上 www,我本以为我最早做网站的时候加了 www 的重定向的,前两天才发现原来没有。今年9月5号的时候,Chrome 发布了新版本的 Chrome 69 浏览器,这个名称还挺风流倜傥的,但是它也惹了众怒,就是自动隐藏了网站的 www 前缀,幸亏它只是隐藏,如果是自动帮用户跳转到无 www 的网页,不客气的说 chrome 肯定会被骂死。很多朋友可能会问,加不加 www 重要吗 ?我的回答是,有些使用场合真的很重要。

咱们先从域名注册开始说起吧编程原力我当时申请的域名就是 coding10.com,这里要划重点了,这是个不带 www 的域名,是绝对的大 boss,是一级域名;而 www.coding10.com、wap.coding10.com、moble.coding10.com 等等其实都是二级域名跟 coding10.com 还真不是一个级别的。但是这里面 www.coding10.com 却极为特殊,在相当一段时间里,哪怕是现在,很多人仍然把带 www 的域名作为正统嫡传,这多是用户的惯性使然,20 年前的用户访问网页跟现在的用户访问网页,习惯真的是完全不同,这也导致了对这两个不同格式域名的两次争论。在早些年,如果网站添加了 www 无法访问的话,很多用户会天然的产生对网站的不信任感,觉得网站做得太烂,不靠谱,放到现在的话,这个评判标准真的很奇葩。

有过网站部署和运营经验的朋友都知道,对网站域名进行服务器映射的时候呢,这两个域名都要进行映射,不然很容易出问题,通常会出现如下的三种问题:

  • www.xxx.com 可以访问,xxx.com 不能正常访问
  • xxx.com 可以访问,www.coding10.com 不能正常访问
  • www.xxx.com 和 xxx.com 都可以访问,但是 session 信息是两套

既然咱们已经知道 xxx.com和 www.xxx.com 是两个不同的域名,出现上面的这些问题就不难理解了,而且从技术的角度严格来说,上面列举的还真的不是问题,只是因为人们把 xxx.com 和 www.xxx.com 当成了一个东西,所以他们在人们眼中才成了问题,这是人的问题,而不是技术的问题。但是既然人们已经形成了广泛的统一认知,后来的江湖就都遵从了这个约定俗成的结果,把这两个域名都映射到同一个服务器的同一个网站上,于是乎,不管你输入哪一个格式的网址,都是在访问同一个网站。但是只做到映射到一个网站是不够的,因为只是简单的映射到一个网站还是有问题:

“我明明登陆了网站,为啥在一部分页面我的状态是未登录,另外一部分网页我的状态却又是登陆状态呢?无论怎么刷新,未登陆的页面也一直是未登录的,登陆的网页怎么刷新都是登陆状态,成了半登半不登的阴阳人?”

如果平时你观察够仔细的话,你应该遇到过这种问题,很多网络开发新手遇到这种问题就是把脑袋拧下来也不知道是怎么回事,而原因却很简单,就是上面我叨唠的那些内容,解决方案就是重定向,做一个统一的规范:“要么全部都带 www,要么全部都不带 www”。

这两年盛行了另一种说话,就是不带 www 的域名更好,更安全云云,还一一列举各种“证据”,这其实是另一个极端的异端邪说,纯碎扯犊子,你只要明白了一个是顶级域名,一个是二级域名就行了,没那么多废话,同样也没有那么多好坏之分,你喜欢全部重定向到哪个就重定向到那个,没啥好纠结。

最后就是SEO权重的问题,近些年一些人根据数据得出了一个有“说服力”的结论,不带 www 的域名被访问的次数远远比带 www 的多,不带 www的网站获得的权重更高,因此做网站的时候应该全部重定向到不带 www 的网页。这个现象是对的,结论却是错的,之所以有这种现象,只是因为人们越来越懒了,用户的使用习惯变了而已,跟 www 带与不带却没半毛钱关系。

马化腾说:“我每天都在焦虑,我真的不知道以后的年轻人是怎么想的~” 

PS:我之前博客汇中有一个错误,被 Laravel-China 一个朋友 arfurs 发现了, “这是个不带 www 的域名,是绝对的大 boss,是一级域名” 。这个部分我之前把一级域名写成了“顶级域名”,但是顶级域名指的是 .com 结尾的域名,是从商业价值上来说的。非常感谢这位朋友的纠正,也为之前的错误致歉 ~