这个问题我琢磨过很久,分享一下心得。
1、不加www有哪些好处和坏处?
不加 www 的裸域名好处主要是域名更加简短、容易记忆。坏处就多了,讲几个主要的技术原因:
另外一点非技术上的考量:用 www 子域名的好处体现在线下的环境,比如户外广告、报纸杂志、语音广播、语音电话等使用场合,www 这个前缀(不管是视觉的还是听觉的)能够很明确的提醒受众,这个信息片段是一个网站。有人会说加上 http:// 前缀也能解决这个问题,但现在随着以 Chrome/Safari 为首的浏览器都开始在地址栏里隐藏 http:// 协议前缀了,普通用户对于 http:// 这几个字符的理解会越来越模糊,所以如果是线下的话,保留 www 这个 visual/vocal cue 还是有一定意义的。
总的来说对于大访问量或多子域名的网站来说,不建议使用裸域。小流量或子域名少的网站的话就看个人爱好了。我挺喜欢裸域的。最近几年流行起来的「单页网页应用」(Single Page Web App) 也是以采用裸域的居多,Twitter 算是一例。
2、去掉www是否会影响网站的SEO(主要是排名和收录)?(前提是过去有加www)
早先裸域刚开始流行的时候确实有传闻说不利于 SEO,但现在看来似乎并无任何问题。如果有的话也是搜索引擎的 bug,给他们提一下他们应该会很乐意去改。Google 的站长工具里面有工具可以帮助你做 URL 迁移的,可以有效的解决这个问题,再配合下一部分的跳转,不用担心对 SEO 有任何负面影响。
3、用什么方式去跳转最好?(如301)
不管你决定使用还是不使用裸域,最好不要在同时保留 www 前缀和裸域的 URL,这样既不方便用户的浏览器区分访问历史,也会对你做访问统计带来不少麻烦。最佳的方式是采用 301 跳转,并且跳转的时候保留 URL 里域名后的全部内容。比如,如果你决定使用裸域 http://example.com,那么请务必将
http://www.example.com/foo/bar?spam=egg
301 跳转到
http://example.com/foo/bar?spam=egg
去。或者反过来,如果你决定不使用裸域,那么请务必将
http://example.com/foo/bar?spam=egg
301 跳转到
http://www.example.com/foo/bar?spam=egg
这样的跳转需要在 web 服务器里单独配置,很多 DNS 管理界面提供的简单的跳转到新域名的根目录无法实现这样的功能(仅仅跳到 http://example.com/ ),对用户体验和搜索引擎 SEO 而言都是非常糟糕的。
下面给出如何在 nginx 里面实现上述的跳转:
# redirect http(s)://www.example.com to http(s)://example.com server { server_name www.example.com; return 301 $scheme://example.com$request_uri; } # redirect http(s)://example.com to http(s)://www.example.com server { server_name example.com; return 301 $scheme://www.$host$request_uri; }
因为http独大了。
www以前就是用来区分协议的。比如ftp,smtp,gopher,telnet,等等。以前互联网有各种各样的协议。写上www就代表是http服务。
现在,其他协议已经极少使用,网址几乎只剩下http这个用途了,当然,就没必要再用www了。