说我有我的域名:
使用选项 A 是否更好:
[A] mydomain.com 123.45.67.89
[A] www.mydomain.com 123.45.67.89
或选项 B:
[A] mydomain.com 123.45.67.89
[CNAME] www.mydomain.com mydomain.com
依次选择实际上会产生什么影响?
第二个问题是,假设我想在博客.mydomain.com。我将其设置为 A 记录,如下所示:
[A] blog.mydomain.com 123.45.67.89
并使它在用户输入时也可以访问www.blog.mydomain.com,我还插入以下记录:
[A] www.blog.mydomain.com 123.45.67.89
问题是,这是一种常见的做法吗?或者有更好的方法吗?我想要实现的是(用户访问 -> 重定向到):
mydomain.com -> mydomain.com
www.mydomain.com -> mydomain.com
blog.mydomain.com -> blog.mydomain.com
www.blog.mydomain.com -> blog.mydomain.com
other.mydomain.com -> error
干杯!
答案1
一般来说,为了便于维护,最佳做法是这样的:
[A] mydomain.com 123.45.67.89
[CNAME] www.mydomain.com mydomain.com
[CNAME] blog.mydomain.com mydomain.com
[CNAME] www.blog.mydomain.com mydomain.com
[A] mail.mydomain.com 123.45.67.89
[MX] mydomain.com mail.mydomain.com
这使您可以更改 mydomain.com 的 A 记录,而不会破坏您的邮件记录或必须手动更改每个子域。
您还需要设置您的网络服务器来响应这些名称。以下是在 Apache 中执行此操作的示例:
NameVirtualHost 123.45.67.89:80
<VirtualHost 123.45.67.89:80>
DocumentRoot /var/www/html/mydomain.com
ServerName mydomain.com
ServerAlias www.mydomain.com
ErrorLog logs/mydomain.com-error_log
CustomLog logs/mydomain.com-access_log combined
</VirtualHost>
<VirtualHost 123.45.67.89:80>
DocumentRoot /var/www/html/blog.mydomain.com
ServerName blog.mydomain.com
ServerAlias www.blog.mydomain.com
ErrorLog logs/blog.mydomain.com-error_log
CustomLog logs/blog.mydomain.com-access_log common
</VirtualHost>
对于您提到的重定向:
问题是,这是一种常见的做法吗?或者有更好的方法吗?我想要实现的是(用户访问 -> 重定向到):
mydomain.com -> mydomain.com www.mydomain.com -> mydomain.com blog.mydomain.com -> blog.mydomain.com www.blog.mydomain.com -> blog.mydomain.com other.mydomain.com -> error
要实际更改客户端地址栏中显示的 URL,需要在服务器端使用 mod_rewrite 来完成,而不是 DNS 的功能。
答案2
选项 B。使用 CNAME 记录为现有 A 记录指定别名。同样适用于博客和 www.blog 条目。选择 CNAME 记录允许您在一个位置(A 记录)更改实际 IP。如果您将所有条目都设为 A 记录,则需要分别更新每个条目。
答案3
对于第一个问题,您可以用任何一种方式来做。将一个 CNAME 作为 CNAME 的唯一实际影响是,当查找该名称时,在某些情况下会导致第二次 DNS 查找以获取它指向的名称(所以现在我查找www.example.com
并获取一个指针example.com
,然后必须查找它才能真正获得 IP)。差异通常在毫秒级,有时如果服务器知道,指针的 IP 也会包含在响应中,从而避免第二次查找。但它仍然会创建更大的 DNS 数据包。我更喜欢将它们定义为A
记录,并使用CNAME
s 来表示我自己域之外的主机。
至于第二个问题,您可以根据需要配置它们,只需确保 Web 服务器能够回答它们并根据需要提供适当的 HTTP 级别重定向(请记住,DNS 不会将浏览器的地址请求重定向到另一个 URL)。