选择 www 或非 www URL

网站所有者经常会问的一个问题是选择非 www 的还是 www 的 URL。本文提供了选择建议。

什么是域名?

在一个 HTTP 网址中,在开头 http://https:// 后的第一个子字符串称为域名。该域名被托管到了文档所在的服务器。

一个服务器不一定是一个独立的物理机:几个服务器可以驻留在同一台物理机器上。此外,一个服务器可以通过多台机器进行处理,协作处理响应或平衡它们之间的请求负载。重点在于,从语义上去理解,一个域名代表一个单独的服务器

那么,我只能选择其中一个做为我的网站的网址?

  • 是的,你必须选择其中之一,且一直使用。你可以任选一个作为规范域名,但选好后就要保持下去。这样,无论是对用户,还是对搜索引擎,你的网站能保持更好的一致性。这包括始终链接到所选域名(如果你在网站中使用相对网址,这不应该很难),以及在分享链接时(比如通过电子邮件/社交网络等)始终使用同一个域名。
  • 不必,你可以两个都采用。关键是,你要明确且始终将其中一个作为官方域名,这个官方域名被称为规范名称。你所有的绝对链接应该使用它。但即便如此,另一个域名仍可以起作用:HTTP 有两种可用的技术,它们可以向你的用户——或是搜索引擎——说明哪一个是规范域名,同时也能让非规范域名起作用并提供用户期待的页面。

所以,选择其中一个作为你的规范域名!下面有两种技术允许非规范域名仍然起作用。

规范网址方式

下面有不同的方式来指定哪个网址是规范的

使用 HTTP 301 重定向

在这种情况下,你需要配置接收 HTTP 请求的那台服务器(一般来说 www 和非 www 网址在同一台),让其用恰当的 HTTP 301 响应来应答所有发往非规范的域名的请求。这会将尝试使访问非规范网址的浏览器重定向到其规范的等效网址。例如,选择了非 www 网址作为规范网址后,所有向 www 网址的请求,都应该被重定向到不含 www 的等效网址。

例如:

  1. 服务器收到向 http://www.example.org/whaddup 的请求(当规范域名是 example.org 时)。
  2. 服务器回应代码 301,以及标头 Location: http://example.org/whaddup
  3. 该客户端向规范域名下的地址——http://example.org/whaddup——发送请求。

HTML5 boilerplate project 中的一个例子演示了如何配置一台 Apache 服务器将一个域名重定向到另一个

将一个特殊的 HTML <link> 元素添加到网页,就能指明网页的规范地址。它对页面的普通读者没有影响,但会告诉搜索引擎爬虫这个页面实际在哪。这样一来,搜索引擎不会对同一页面索引多次——这可能导致页面被视为重复内容或垃圾内容,甚至于搜索引擎结果中会删除你的页面或者降低你的排名。

当加入这个标签,在两个域名中提供相同的内容,会告诉搜索引擎哪个域名是规范的。以前面的例子为例,http://www.example.org/whaddup 将提供与 http://example.org/whaddup 相同的内容,但有一个额外的 <link> 头部元素:

html
<link href="http://example.org/whaddup" rel="canonical" />

与前一种方法不同的是,在浏览器历史记录中非 www 和 www 的网址是独立的条目。

使你页面都有效

有了这些技术,你可以配置服务器对 www 前缀和非 www 前缀的域名进行正确的响应。你无法预测用户会在浏览器地址栏输入哪个 URL,你需要做的就是选择一个作为你的规范地址,然后将另一个地址重定向到它。

根据情况决定

可以认为这是一个非常主观的自行车棚效应。如果你想更深入地阅读,这里有一些资源:

参见