使用新的 CNAME RR 时出现 404 错误

使用新的 CNAME RR 时出现 404 错误

我们的服务器对“example.com”具有权威性。如果有人在 Web 浏览器中输入 example.com,我们需要它重定向到 domain2.com。由于您无法为根区域名称设置 CNAME RR,因此我尝试将 example.com 的 www 指向 domain2.com,如下所示:

www             IN CNAME        domain2.com.

这适用于 Dig - 也就是说,我运行 dig 并找到 www.example.com 的 CNAME。但是在 Web 浏览器中,我输入 www.example.com 并收到 404 未找到错误。我没有被重定向到 domain2.com。

以下是 domian2.com 的 Dig 结果:

;; ANSWER SECTION:
domain2.com. 17 IN  CNAME   anotherdomain.com.
anotherdomain.com. 140  IN  A   192.168.1.100
anotherdomain.com. 140  IN  A   192.168.1.100

因此它有自己的 CNAME,并且有 2 个相同的 A 记录。不确定这是否是个问题。我希望有人能告诉我我做错了什么,如何修复它,或者这个 CNAME 到另一个 CNAME 业务是否行不通。注意 - 此时无法在代码中进行重定向。如果可能的话,需要一个 DNS 解决方案。

答案1

您无法按照自己想要的方式做自己想做的事情 - 互联网并不像您想象的那样运作......

当你进入http://www.example.com/test/index.html网络浏览器时,example.com 会被收集并用于创建一个主机:标头(参见第 14.3 节)

名称 www.example.com 也用于解析服务器的 IP 地址。在您的情况下,它最初解析为一系列 CNAME,因此会为每个 CNAME 发出额外的 DNS 请求,直到 IP 地址解析完成。

由于 url 以 http:// 开头,因此会与最终解析的 IP 地址的 80 端口建立 TCP 连接。

一个 Web 服务器可能配置为响应许多域。当你连接到它时,它不知道你正在调用哪个域。这就是使用主机标头的地方

   GET /test/index.html HTTP/1.1
   Host: www.example.com

这告诉网络服务器从配置为响应 www.example.com 的虚拟主机提供 /test/index.html。

请注意,CNAME 记录的唯一用途是查找服务器地址。它完全不影响主机头。

为了解决您的问题,您需要配置 www.example.com 上的虚拟主机以响应重定向到您的其他域名。

答案2

DNS 是电话簿。在电话簿中,您可以说“要联系www.domain2.com,请拨打192.168.1.100”。

网络服务器负责接听 的电话192.168.1.100。当它接听电话时,它不知道呼叫者(即用户的网络浏览器)之前在电话簿中读了什么。因此它会说“您好,我是anotherdomain.com,请问有什么可以帮您的?”,而用户的浏览器会感到困惑。要使一切正常,您必须告诉网络服务器,当有人拨打 时192.168.1.100,它应该接听www.domain2.comanotherdomain.com

您无法让 Web 服务器自动知道某人在电话簿中输入了哪些姓名。您必须明确地告诉它(通常通过其配置文件)。如果您觉得这似乎不明显,请考虑一下 Farawayistan 的某个困惑的人在他们当地的电话簿中意外地写下了my.pretty.horse号码的情况192.168.1.100,而他们真正想写的是192.168.100.1。您或您的 Web 服务器不可能知道发生了什么。

相关内容