原因
因为http独大了。
www以前就是用来区分协议的。比如ftp,smtp,gopher,telnet,等等。以前互联网有各种各样的协议。写上www就代表是http服务。
现在,其他协议已经极少使用,网址几乎只剩下http这个用途了,当然,就没必要再用www了。
所以,我们经常看到的网址可能有 www.mhcoding.cn,ftp.hcoding.cn, mail.mhcoding.cn,等等的子域名形式。
如何省略www
有过网站建设的人可能都有这样的经验,当我们购买一个域名之后,要给这个域名做解析,解析的时候需要填写以下信息:
其中的主机记录部分,可以填写的内容如下:
也就是说,域名是可以配置如何解析的,当我们设置www作为域名前缀的时候,那么访问www.aliyun.com即可访问网站。当我们设置@作为域名前缀的时候,直接访问aliyun.com就可以访问网站了。
不加www有哪些好处和坏处?
不加 www 的裸域名好处主要是域名更加简短、容易记忆。
坏处就多了,讲几个主要的技术原因:
- 裸域名只能绑定 DNS 的 A 记录,不能绑定 CNAME 记录。设定为另外域名的别名。很多时候这对管理不是很方便,特别是使用第三方托管服务的时候。如果第三方迁移服务器导致 IP 地址变更,你必须自己去更改 DNS 的 A 记录。
- 裸域的cookie的作用范围太大。假如知乎也采用裸域,那么知乎所有 cookie 的作用范围就包括一级域名下的所有子域名
去掉www是否会影响网站的SEO(主要是排名和收录)?(前提是过去有加www)
早先裸域刚开始流行的时候确实有传闻说不利于 SEO,但现在看来似乎并无任何问题。如果有的话也是搜索引擎的 bug,给他们提一下他们应该会很乐意去改。
Google 的站长工具里面有工具可以帮助你做 URL 迁移的,可以有效的解决这个问题,再配合下一部分的跳转,不用担心对 SEO 有任何负面影响。
用什么方式去跳转最好?(如301)
不管你决定使用还是不使用裸域,最好不要在同时保留 www 前缀和裸域的 URL,这样既不方便用户的浏览器区分访问历史,也会对你做访问统计带来不少麻烦。
最佳的方式是采用 301 跳转,并且跳转的时候保留 URL 里域名后的全部内容。比如,如果你决定使用裸域 example.com,那么请务必将
301 跳转到
去。或者反过来,如果你决定不使用裸域,那么请务必将
301 跳转到
下面给出如何在 nginx 里面实现上述的跳转: