![将根域名及所有子域名重定向到另一个等效域名(仅限 DNS)](https://linux22.com/image/704869/%E5%B0%86%E6%A0%B9%E5%9F%9F%E5%90%8D%E5%8F%8A%E6%89%80%E6%9C%89%E5%AD%90%E5%9F%9F%E5%90%8D%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%AD%89%E6%95%88%E5%9F%9F%E5%90%8D%EF%BC%88%E4%BB%85%E9%99%90%20DNS%EF%BC%89.png)
首先,是的,我知道,这个问题可能是重复的,但我已经搜索了几个小时,却找不到任何相关的答案......所以我尝试询问。
假设我得到了 domain-a.com 和 domain-b.com。domain-a 只是 domain-b.com 的别名,所有内容(根域和子域)都应重定向到它。因此,我想要以下重定向:
http://domain-a.com => http://domain-b.com
http://aze.domain-a.com => http://aze.domain-b.com
http://www.domain-a.com => http://www.domain-b.com
我还需要浏览器来显示domain-b.com
,因此domain-a.com
在访问域名时不应出现在任何地方......
好的,到目前为止,是的,使用 A 记录和使用 nginx 或 Apache 的重定向非常简单。但我希望仅使用我的 DNS 设置(通过 OVH 面板)来完成所有这些操作,所以我只需domain-b.com
在自己的服务器上处理即可。
我尝试过的:
domain-a.com
在:上使用这样的 CNAME 记录* IN CNAME domain-b.com.
,但是当我转到时aze.domain-a.com
,URL 不会改变,并且不会处理根域。- 使用301重定向,但我必须配置每个子域名,并且我不知道会提前使用哪些子域名。
看起来DNAME 记录符合我的需求,但我无法使用 OVH 设置。因此,如果这是正确的记录,我必须将我的域名转移到另一个注册商,所以我希望在这样做之前确定一下。
我还有另一个限制:我的服务器处理多个域名,所以我无法捕捉每一个请求重定向到domain-b.com
等效项,并且我只想配置domain-a.com
。
那么,这可能吗?
感谢您的帮助
答案1
重定向 Web 请求的唯一方法是使用 Web 服务器。当 DNS 解析器(如内置在用户系统中的解析器)请求地址时,它会获取一个地址。CNAME 只会告诉它从哪里获取地址,但它想要一个地址,仅此而已。然后,它将向 Web 服务器发起请求,获取它所请求的域,并使用获得的地址作为启动 TCP 连接的方式。您的浏览器和 DNS 解析器之间没有任何连接。因此,在纯 DNS 场景中,即使使用 DNAME(只是更大规模的 CNAME),您也无法实现所请求的内容。
我不熟悉 nginx 的配置,但在 apache 中,您可以创建一个虚拟主机来为域 b 提供服务。顶级虚拟主机充当任何其他访问网站方式的“全部捕获”。您可以使用一些重写规则将所有这些全部捕获重定向到域 b。因此,您可以捕获 aze.domain-x.com 或 aze.domain-y.com 等,并抓取主机部分并将其重定向到 aze.domain-b.com。您必须使用一些正则表达式等,但这是正确的方法。请参阅Apache 2.4 使用 mod_rewrite 进行重定向和重新映射。我确信 nginx 具有相同的功能,尽管可能以不同的方式执行。