www 与非 www URL 的选择

网站所有者经常会问这样一个问题:是选择“www”(www.example.com)还是“非 www”(example.com)的 URL。本文提供了一些关于何种选择最佳的建议。

什么是域名?

在 HTTP URL 中,紧跟在 http://https:// 后面的第一个子字符串称为域名。该域名托管在存放文档的服务器上。

服务器不一定是物理机器:多台服务器可以位于同一台物理机器上。或者,一台服务器可以由多台机器处理,它们协同工作以产生响应或在此之间平衡请求负载。关键在于,从语义上讲,一个域名代表一个服务器

那么,我的网站必须选择其中之一吗?

  • 是的,您需要选择一个并坚持使用。选择哪个作为您的规范位置由您决定,但一旦选择,就请坚持。这将使您的网站对用户和搜索引擎更加一致。这包括始终链接到所选的域名(如果您在网站中使用相对 URL,这应该不难),并且始终共享相同的域名链接(通过电子邮件/社交网络等)。
  • ,您可以同时拥有两个。重要的是您要保持连贯和一致,确定哪个是官方域名。此官方域名称为规范名称。您所有的绝对链接都应使用它。但即便如此,您仍然可以使另一个域名正常工作:HTTP 允许两种技术,以便用户或搜索引擎清楚哪个域名是规范的,同时允许非规范域名工作并提供预期的页面。

所以,请选择您的其中一个域名作为规范域名!下面有两种技术可以使非规范域名仍然正常工作。

规范化 URL 的技术

有不同的方法可以选择哪个网站是规范的。

使用 HTTP 301 重定向

在这种情况下,您需要配置接收 HTTP 请求的服务器(对于“www”和“非 www” URL 来说,这很可能是同一个服务器),以便对任何访问非规范域名的请求响应一个合适的 HTTP 301 响应。这将把尝试访问非规范 URL 的浏览器重定向到其对应的规范 URL。例如,如果您选择使用“非 www” URL 作为规范类型,则应将所有“www” URL 重定向到其不带“www”的对应 URL。

示例

  1. 服务器收到一个对 http://www.example.org/whaddup 的请求(当规范域名为 example.org 时)。
  2. 服务器以 301 状态码和 Location 头部 Location: http://example.org/whaddup 进行响应。
  3. 客户端向规范域名下的位置发出请求:http://example.org/whaddup

HTML5 boilerplate 项目 提供了一个关于如何配置 Apache 服务器将一个域名重定向到另一个域名的示例。

可以在页面中添加一个特殊的 HTML <link> 元素,以指示页面的规范地址。这不会影响页面的真人读者,但会告诉搜索引擎爬虫页面实际在哪里。这样,搜索引擎就不会多次索引同一个页面,从而避免其被视为重复内容或垃圾邮件,甚至不会导致您的页面在搜索引擎结果页面中被移除或排名降低。

添加此类标签时,您会为两个域名提供相同的内容,并告知搜索引擎哪个 URL 是规范的。在上面的示例中,http://www.example.org/whaddup 将会提供与 http://example.org/whaddup 相同的内容,但在头部会额外添加一个 <link> 元素。

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

与前一种情况不同,浏览器历史记录会将非 www 和 www URL 视为独立的条目。

让您的网页同时支持两者

通过这些技术,您可以配置服务器正确响应带 www 前缀和不带 www 前缀的域名。这样做是明智的,因为您无法预测用户会在浏览器的地址栏中输入哪个 URL。关键在于选择您希望用作规范位置的类型,然后将另一种类型重定向到它。

决定规范域

这是一个非常主观的话题——它可能被视为一个“详尽讨论”(bikeshedding)问题。如果您想深入了解,这里有一些资源:

另见