网站所有者经常会问的一个问题是选择非 www 的还是 www 的网址。本文提供了选择建议。
什么是域名?
在一个 HTTP 网址中,在初始 http://
或 https://
后的第一个子字符串称为域。它是文档所在的服务器的名称。
一个服务器不一定是一个独立的物理机:几台服务器可以驻留在同一台物理机器上,或者一台服务器可以通过几台机器进行处理,协作处理并响应或负载均衡它们之间的请求。关键点在于语义上一个域名代表一个单独的服务器。
所以,我只能选择其中一个做为我的网站的网址?
- 是的,你必须选择其中之一,且一直使用。选择使用其中哪一个取决于你,当你选择完之后,就要保持下去。这样,无论是对用户,还是对搜索引擎,你的网站能保持更好的一致性。这包括始终链接到所选域名(如果你在网站中使用相对网址,则不应该很难),也可以始终将链接(通过电子邮件/社交网络等)共享使用同一个域名。
- 不,你可以有两个。重要的是,你需是保持的那一个官方的域名,这个官方域名被称为规范名称。你所有的绝对链接应该使用它。但即便如此,你仍然可以有其他域名使用:HTTP允许使用两种技术,以便它在使用规范域名的同时还允许非规范域名使用,使使用者或搜索引擎可以准确的访问到所预期的页面。
所以,选择其中一个作为你的域名的规范地址!下面有两种技术允许不规范的域名仍然起作用。
规范网址方式
选择下面有两种不同的方式使网站规范。
使用 HTTP 301 重定向
在这种情况下,你需要配置服务器接收的HTTP请求( 常见为 www 和非 www 网址相同)以及适当的HTTP响应 301
去响应所有非规范的域名请求。这会将尝试使访问非规范网址的浏览器重定向到其规范的等效网址。举例来说,如果您选择使用非 www 网址为规范类型,你的所有 www 网址都应该被重定向到对应的非 www 网址上。
例如:
- 服务器收到 http://www.example.org/whaddup 请求(当规范域名是 example.org 时)
- 服务器则以代码
301
与头Location
:http://example.org/whaddup
- 该客户端发出的规范的域名请求:http://example.org/whaddup
HTML5 boilerplate project 有一个示例 how to configure an Apache server to redirect one domain to the other。
使用 <link rel="canonical">
它可以将一个特殊的 HTML <link>
元素添加到网页指示什么网页的标准地址,这对页面的访问者没有影响,但在搜索引擎检索时会告诉搜索引擎当页面实际的地址。通过这种方式,搜索引擎不需要索引同一页面多次,那样可能导致它被视为重复的内容或垃圾邮件,甚至从搜索引擎结果中删除或者降低你的页面显示排名。
当加入这样一个标签,会告诉搜索引擎,你提供相同内容的两个域名那一个是规范的。以前面的例子为例,http://www.example.org/whaddup 将提供与 http://example.org/whaddup 相同的内容,但有一个附加的 <link>
头部元素:
<link href="http://example.org/whaddup" rel="canonical">
不同于以往,浏览器历史记录将考虑非 www 和 www 的网址作为独立的条目。
使你页面都有效
有了这些技术,您可以将服务器配置为两个正确响应, www 的前缀和非 www 前缀的域名,这是要做到这一点,因为你无法预测哪些 URL 用户输入他们的浏览器的 URL 好的建议酒吧,这是选择你要作为规范的位置使用,然后重定向其他类型的它哪种类型的问题。
根据情况决定
可以认为这是一个非常主观 bikeshedding 问题。 如果你想更深入的阅读,请参阅 WWW vs non-WWW for your Canonical Domain URL – Which is Best and Why? ,它可能提出进一步的见解。