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