带 www 和不带 www

dawnkylin / 2024-03-01 / 原文

域名(domain name)是人类可读的服务器的地址名称。一台物理机器可能包含多台服务器,一台服务器也可能由多台物理机器支撑。一个服务器可以有多个域名。

域名通常是多级的,比如 www.badiu.com,com 是顶级域名(Top-Level Domain, TLD),位于 com 前的 baidu、www 是标签 label 或者组件 component,baidu 也被称作二级域名(Secondary Level Domain,SLD)。

我们访问 baidu.com 和 www.baidu.com 会看到一样的页面,它们一个是规范域名,另一个是非规范域名。

HTTP 有两个技术实现多域名:HTTP 301 重定向和<link rel="canonical" />

若使用 HTTP 301 重定向,那么需要将所有的非规范域名重定向到规范域名。

例子:

  1. 服务器接收到请求 https://www.example.com/index.html 的 request
  2. 服务器返回一个code为301,头部 Location 为 https://example.com/index.html 的response
  3. 客户端向服务器发送请求 https://example.com/index.html 的 request

有一个关于如何配置 Apache 服务器重定向其他地址的项目:HTML5 boilerplate project

若使用<link rel="canonical" />

<link href="http://example.com" rel="canonical" />

这样做会直接告诉搜索引擎页面的规范地址是哪个,避免搜索引擎重复索引一个页面几次而导致页面从搜索结果中移除或比重降低。与前面的做法不同的是,这样做浏览器历史记录会将带 www 的和不带 www 的作为不同的条目。

带 www 的和不带 www 都不会对 SEO 产生影响,只需保持对其中一个域名的一致使用即可。