1 min read

NO WWW

首先,这标题绝非我拒绝使用 WWW (互联网)的意思。只是在讲域名中不要加 www。另外,这也不是我的主张,只是看到互联网上有这么个主张,就介绍一下。

为什么要 no-www

对普通互联网使用者来说,域名中 www 或 no-www 其实并无关系,只要能正常访问网站即可。但按 No-WWW 网站的说法,则 www 其实是多余的:

默认情况下,所有流行的浏览器都默认 HTTP 协议。如此,浏览器就会在请求的 URL 地址前自动补上 ‘http://’,然后自动连接 HTTP 服务器上的 80 端口……Web 服务器允许通过主域名访问页面,除非指定特殊子域名。

简单说,使用 www 子域名根本是多余的,空耗费连接时间。

当然,有说 no-www 的,肯定就有 yes-www 的,理由也不少。

具体实践情况

那么来看下具体实践的情况。

这是 Quantcast 美国的 top sites 数据。我抽取前 20 名来做个统计:

no-www → www www → no-www 未曾做重定向
google.com twitter.com ask.com
youtube.com vimeo.com
facebook.com pinterest.com
msn.com wordpress.org
yahoo.com
amazon.com
wikipedia.org
ebay.com
microsoft.com
huffingtonpost.com
bing.com
ehow.com
blogspot.com
answers.com
blogger.com

可以看到,除了 ask 不曾统一网址外,所有其他网站均做了网址的重定向,或 no-www 重定向到 www,或 www 重定向到 no-www。

其实按我理解,则重定向网址的需求更多不是因为 no-www 或 yes-www 提出的理由,而是出于讨好搜索引擎的需要

举我的博客为例,如果不做重定向,则以下网址访问的内容其实是一致的:

  1. http://www.zfanw.com/blog
  2. http://zfanw.com/blog

用户可能不关心它是有 www 还是没有,但搜索引擎会注意到这点。具体可以看 Google 网站工具上“规范化“的说明。

那么如何实现 no-www 到 www 或是 www 到 no-www 的 301 重定向?简单的办法是通过 .htaccess 文件设置。

no-www 301 重定向到 www

在 .htaccess 文件中加入以下代码:

#####301 跳转所有 no-www 到 www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteRule ^(.*)$ http://www.%{http_host}/$1 [R=301,NC]

这样,输入网址 http://zfanw.com/blog 就会跳转到网址 http://www.zfanw.com/blog

www 301 重定向到 no-www

类似的,在 .htaccess 文件加入如下代码:

#####301 跳转所有 www 到 no-www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

这样,输入网址 http://www.zfanw.com/blog 就会跳转到网址 http://zfanw.com/blog

鸣谢

  1. apache wiki
报告问题 修订