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。
示例
- 服务器收到一个对
http://www.example.org/whaddup的请求(当规范域名为 example.org 时)。 - 服务器以
301状态码和Location头部Location: http://example.org/whaddup进行响应。 - 客户端向规范域名下的位置发出请求:
http://example.org/whaddup。
HTML5 boilerplate 项目 提供了一个关于如何配置 Apache 服务器将一个域名重定向到另一个域名的示例。
使用 <link rel="canonical">
可以在页面中添加一个特殊的 HTML <link> 元素,以指示页面的规范地址。这不会影响页面的真人读者,但会告诉搜索引擎爬虫页面实际在哪里。这样,搜索引擎就不会多次索引同一个页面,从而避免其被视为重复内容或垃圾邮件,甚至不会导致您的页面在搜索引擎结果页面中被移除或排名降低。
添加此类标签时,您会为两个域名提供相同的内容,并告知搜索引擎哪个 URL 是规范的。在上面的示例中,http://www.example.org/whaddup 将会提供与 http://example.org/whaddup 相同的内容,但在头部会额外添加一个 <link> 元素。
<link href="http://example.org/whaddup" rel="canonical" />
与前一种情况不同,浏览器历史记录会将非 www 和 www URL 视为独立的条目。
让您的网页同时支持两者
通过这些技术,您可以配置服务器正确响应带 www 前缀和不带 www 前缀的域名。这样做是明智的,因为您无法预测用户会在浏览器的地址栏中输入哪个 URL。关键在于选择您希望用作规范位置的类型,然后将另一种类型重定向到它。
决定规范域
这是一个非常主观的话题——它可能被视为一个“详尽讨论”(bikeshedding)问题。如果您想深入了解,这里有一些资源:
- netlify.com 上的“裸域选项”(2020 年)
- www 与非 www – WordPress SEO 哪个更好?(wpbeginner.com,2023 年)
另见
- 用户在 URL 栏中输入内容的统计数据 (2011)