网站带不带 www 真的大不同,新手不知道区别会走很多弯路

最近我把网站的重定向进行了修改,主要就是修改 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 结尾的域名,是从商业价值上来说的。非常感谢这位朋友的纠正,也为之前的错误致歉,arfurs 让这篇博客更加严谨,算是我们共同完成了这篇博客!

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 5年前 自动加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 31
codinget

@Song伊雪 你太敏锐了

5年前 评论
codinget

过完年了,回归工作

5年前 评论
codinget

@vimtutor 非常感谢,如果以后 Coding10 推出外链的区块的话,咱们再合作吧,我比较懒,短期内不会添加任何广告和外链相关的内容

5年前 评论

网站内容很不错哦,想跟站长交换一波友链~

5年前 评论
codinget

准备写这个系列后边的内容了

5年前 评论
codinget

@MengCY 咱们说的不是一个问题

5年前 评论
MengCY

域名解析绑定一个A记录与CNAME不就完事了么

5年前 评论
codinget

@arfurs 我自己网站上的博客也进行了更改,再次感谢兄弟这么细致严谨

5年前 评论
codinget

@arfurs 这是我博客的错误,绝不甩锅也不狡辩,.com 的价值高于其他结尾的域名,是顶级域名(最高价值)的域名,我应该把它修正为一级域名或者根域名。十分感谢这位朋友,也向看过这篇博客的朋友说声抱歉,是我写博客不严格了,属于严重错误。

5年前 评论

为什么coding10.com是顶级域名而www.coding10.com是二级域名?根据维基百科对顶级域名(Top-level domains)的定义:

顶级域(或顶级域名;英语:Top-level Domain;英文缩写:TLD)是互联网DNS等级之中的最高级的域,它保存于>DNS根域的名字空间中。顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在example.com这个域>名中,顶级域是.com(或.COM),大小写视为相同。

莫非是国内外不同的叫法?

5年前 评论
codinget

@codinget 这篇需要更新了

5年前 评论
codinget

目前主流的大站还都是带www,主要也是延续了过去的传统,对于新站来说怎么统一都没关系了

5年前 评论
codinget

@sphard 统一了就好,管它怎么统一的呢

5年前 评论

我恰好相反,全部统一到不带 www 的上面了
https://sphard.com
https://darrenliuwei.com

5年前 评论

一些网站会省略了www,能不能访问由服务器nginx配置决定,我的网站为了统一流量,将不带www的重定向了www。https://www.fanhaobai.com

5年前 评论

所以之前在对接第三方接口的时候,填的回调域名是一级域名,测试却是在www的二级域名,导致一直出错。。。。。

5年前 评论

@codinget 也不是,当时很请求一次就发现了
哈哈哈

5年前 评论
codinget

@Song伊雪 看来吃过这个问题的亏啊

5年前 评论
codinget

我的网站里有些 laravel 的学习视频和资料,也欢迎大家来坐坐客 coding10.com

5年前 评论
codinget

有朋友对这个问题进行了一些补充,我觉得非常重要,就是请求接口的时候填写回掉的时候一定要特别注意,不然也容易出问题,还分析不出来。我也得在coding10网站上更新一下这部分内容了,感谢

5年前 评论
codinget

@lovecn 是的,我的都统一www了

5年前 评论

看你的网站是301到 http://www.coding10.com/

5年前 评论

请求接口一定要注意这种问题

5年前 评论
codinget

@to2False 可是人家麻花疼可不那么想,不然菊花就不愿意了

5年前 评论

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

那就别想了呗,交给年轻人来想

5年前 评论
codinget

@jake_zou 对,反正都映射到一个就是了

5年前 评论
codinget

@沐雨 现在大家都习惯不输入www了,用户的习惯已经发生变化了,用户基本上把带www的和不带的当成了一个,至于哪个才是真正的主页反而不重要了,毕竟他们都只是域名,咱们映射到的网页才是主页

5年前 评论

我懒,输网址都不带www的。看了看上面的地址栏 laravel-china.org,手动加上www,回车然后又没了。。另外我www的子域是用来做备案的,不带的才是主页。。

5年前 评论

www.xxx.com => xxx.com
二级域名直接映射到一级域名 了事

5年前 评论
codinget

@Caral 对,这也是很多人会遇到的一个错误,也是因为把这两个当成一个东西了

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!