我应该如何配置我的 DNS 记录以将所有流量从一个域定向到另一个域?

Posted

技术标签:

【中文标题】我应该如何配置我的 DNS 记录以将所有流量从一个域定向到另一个域?【英文标题】:How should I configure my DNS records to direct all traffic from one domain to another? 【发布时间】:2015-04-14 19:20:14 【问题描述】:

我有一个域名mydomain.commydomain.biz,并希望后者成为前者的同义词:每当用户输入www.mydomain.biz 时,他们就会被带到www.mydomain.com

我为mydomain.com 准备好了一切,并从我的limited understanding 认为CNAME 记录将完成我想要做的事情,所以我有

NS     mydomain.biz.    =  (nameservers that work fine)
SOA    mydomain.biz.    =  (values that work fine)
CNAME  *.mydomain.biz.  =  mydomain.com.

当我host mydomain.biz 我得到

www.mydomain.biz is an alias for mydomain.com.

后面是与我从host mydomain.com 得到的完全匹配的其他信息。然而,任何导航到www.mydomain.biz 的尝试都会失败。

当我查看我的 NS 记录的 propagation 时,我也对所看到的内容感到困惑。检查mydomain.biz 给出上面指定的名称服务器,但检查www.mydomain.biz 给出mydomain.com 指定的值(在其他地方)

我这样做的方式不对吗?我应该如何配置我的 DNS 记录以将所有流量从一个域引导到另一个域。

【问题讨论】:

【参考方案1】:

DNS 无法重定向请求。让我们举个例子说明 CNAME 做了什么来澄清:

CNAME:域A ==> 域B

这样做是将域A 的请求发送到与域B 相同的IP。但是 URL 将保持为 domainA(因此它不是重定向,重定向实际上会更改 URL)。

如果您可以在两个不同的域下加载站点,那么 CNAME 记录就可以完成这项工作。但是,您需要确保您的服务器配置为处理来自 domainA 和 domainB 的请求。根据您的服务器环境,您执行此操作的方式非常不同。例如,如果您使用的是 apache,您的虚拟主机会决定处理哪些域(您可以设置它以便接受任何域)。但是,如果您使用的是共享主机,您可能会被限制在您注册的域中。添加更多取决于您的虚拟主机,因此您必须接受它们。

另一方面,如果您希望将访问者重定向到 domainB,则必须将 domainA 指向将返回 HTTP 重定向的服务器。可以是同一台服务器,如果请求是针对 domainA 的,您只需将其配置为返回 HTTP 重定向。

【讨论】:

所以我链接的关于使用 CNAME 用于此目的的答案(以及网上数百个类似的答案)是错误的? 我认为您链接的答案只是滥用了重定向一词。我发现这个***.com/questions/593807/… 解释得更好。 我的问题也是如此,我想。我正在寻找的结果与 CNAME 的描述相同,除非我遗漏了什么。 CNAME 过去曾为我工作过。 CNAME 记录会将域 A 指向域 B,以便它们最终都转到同一服务器,但 URL 仍将是原始域 A。如果这是您想要的,那就太好了。您需要做的就是确保您的服务器期望主机为域 A 的请求,这样它就不会像您所说的那样失败。 所以B的服务器需要一些配置来接收A?这似乎很奇怪:在这种情况下,服务器没有以任何方式配置——A 或 B 都没有。

以上是关于我应该如何配置我的 DNS 记录以将所有流量从一个域定向到另一个域?的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何在 Spring Boot 中配置 httpMessageConverters 以将消息转换为所需的格式?

如何配置DNS主机记录,以便我的网站显示域名而不是IP地址?

对于托管在 CloudFront 后面的 EC2 实例上的站点,如何将非 www 流量重定向到 www?

如何配置我的 DNS 以使用 Rancher 2.0 入口?

如何配置 Jenkins 作业以将文件从 git 复制到服务器

搜索域和子域的所有 DNS TXT 记录