54

要处理规范 URL,最佳做法是执行 301 重定向还是更好地为 www 和非 www 域使用相同的 IP 地址?

例如:

想要的规范 URL/域是http://example.com

Domain           | A Record
------------------------------------
example.com      | 192.0.2.34
www.example.com  | 192.0.2.34

我知道人们可能有 www 的 CNAME 记录(别名,因为 CNAME 被称为规范名称);与使用相同的 IP 地址相比,不确定这是否是最佳做法。

或者这样更好。

Domain           | A Record
------------------------------------
example.com     | 192.0.2.34
*  www.example.com 301 redirect to example.com
4

3 回答 3

134

您描述的机制(A以及CNAME记录与301重定向)是两种不同协议(DNS 和 HTTP)的一部分。A并且CNAME记录与您的 HTTP 服务器为不同请求服务的站点无关。

让我们看一下两种不同的 DNS 配置:

配置 1(CNAME 记录)

Host             | Type  | Data
-----------------+-------+-------------
example.com      | A     | 192.0.2.34
www.example.com  | CNAME | example.com
  • nslookup example.com解决为192.0.2.34
  • nslookup www.example.com解决为192.0.2.34

配置 2(A 记录)

Host             | Type  | Data
-----------------+-------+-------------
example.com      | A     | 192.0.2.34
www.example.com  | A     | 192.0.2.34
  • nslookup example.com解决为192.0.2.34
  • nslookup www.example.com解决为192.0.2.34

在这两种情况下,您的规范域和www子域都解析为192.0.2.34. 但是,您的 HTTP 服务器唯一能识别的是,它会同时接收来自example.comwww.example.com一个 IP 地址的请求。但它不知道您是否为此使用ACNAME记录。

TL;博士

您必须使用 HTTP 301 重定向来强制example.comHTTP 请求中的规范。但这与您的 DNS 配置无关。

于 2013-10-25T14:36:51.197 回答
5

您可以尝试redirect.center。它仅使用 DNS 重定向域。
因此它将满足您的 DNS 配置:

Domain           | A Record
------------------------------------
example.com      | 192.0.2.34
*  www.example.com 301 redirect to example.com

将您的 DNS 记录设置为:

域名 | 万维网 | example.com.opts-https.redirect.center

注意:
参数.opts-https.重定向到https
如果您只使用http域,则使用.opts-uri.

于 2018-02-21T18:02:55.037 回答
1

在 DNS 中,规范名称记录指向“一个真正的 DNS 条目”。最终结果是 DNSName1 与 DNSName2 具有相同的 IP 地址。

CNAME 不是规范名称这一事实使理解变得复杂。CName 记录指向规范名称。(规范名称是 A 记录)。

规范链接:对于搜索引擎,页面 html 标头中的规范链接指定“一个真实页面”。您可以访问多个页面,但您使用规范链接告诉搜索引擎该页面与其他页面相同。这样做会让搜索引擎很高兴,因为您不会假装提供更多内容而只是重复,而不是在玩弄系统。它只索引一次。

301 (http) 重定向:对于搜索引擎,这表示页面 x 现在被页面 y 替换,并且所有搜索排名都可以转移到页面 y。如果它是一种“装饰性”的域名标准化,它还会告诉搜索引擎只索引一个页面,这也是一种表明您没有试图欺骗搜索引擎的方式。

于 2017-03-27T06:48:02.693 回答