wake-up-neo.com

如何仅使用A记录和CNAME记录将域A重定向到域B

我有2个托管在不同主机上的域。我需要将域A重定向到域B。不幸的是,我无法从主机A进行301重定向,但只能在主机A上修改/添加DNS条目(A记录和CNAME)。

当然可以仅使用A记录和CNAME将www.DomainA.com重定向到www.DomainB.com吗?

目前,DNS条目为:

DomainA.com.    3600    IN    SOA       ns1.HostA.net.
www             3600    IN    CNAME     www.DomainB.com.    
DomainA.com.    3600    IN    NS        ns1.HostA.net.  
DomainA.com.    3600    IN    NS        ns2.HostA.net.  
DomainA.com.    3600    IN    NS        ns3.HostA.net.

我想重定向

DomainA.com -> DomainB.com
*.DomainA.com -> *.DomainB.com

我已经尝试过此 其他帖子 的建议,但是没有用。

请问如何仅使用A-Records和CNAME来实现?感谢您的建议。

Prembo。

52
Prembo

因此,您并不是在考虑重定向(在应用程序级别上发生这种情况,即在Apache/Nginx /任何地方),而是在DNS解析方面。由于您希望将DNS请求解析为DomainB的IP,因此根据您的描述,将不会或永远不会命中托管DomainA的主机。除非我在您的请求中遗漏了什么?

正如Shane指出的那样,DNS无法进行HTTP重定向-这是应用程序/网络服务器的职责。您可以使DomainA和DomainB解析为DNS上的相同IP,并且所有这些都可以工作。但是,如果您希望按照每个URL /每个路径的方式执行此操作,那么这是不可能的-DNS无法做到这一点-这是一种简单的DNS-> IP服务,实际URL发生的事情是Web服务器的任务。

在下面的评论之后,我要做的是将DomainA的所有DNS记录引用到DomainB所指向的相同IP(这种方式),这样您就可以将HTTP请求发送到hostB上,这很简单:

  1. 创建一个基于Apache名称的特定虚拟主机-将通过其自己的DocumentRoot提供文件
  2. 在Apache上创建永久重定向,如下所示:

这会将来自DomainB的所有内容重写为DomainA,可以将其托管在同一服务器或其他位置。我知道第二种选择可能是一项开销,如果可以/允许在Apache上创建基于名称的虚拟主机,则不必这样做。

<VirtualHost *:80>
  ServerName DomainB
  Redirect permanent / http://DomainA/
</VirtualHost>

我将使用1。-将DomainA的所有DNS记录指向与DomainB指向的相同IP,并在Apache上创建特定的基于名称的虚拟主机。

41
milosgajdos

正如其他人所说,仅凭DNS不可能执行HTTP重定向。 DNS和HTTP一起工作以将用户从一个网页重定向到另一个网页。

您可以单独使用DNS来使域A显示与域B相同的内容,但是Web浏览器将在URL中显示域A。您需要对此非常小心,因为从SEO角度来看这非常糟糕。您会为“重复内容”惹上麻烦,搜索引擎会为此惩罚您。

进行此工作的正确方法(从UX和SEO角度而言)是执行从域A到域B的HTTP重定向。

如果您在技术上有能力,则可以手动配置Web服务器(Apache,Nginx,IIS等)来为您完成此工作。网上有很多很好的资源可以帮助您解决此问题。

如果您不能或不想控制基础结构,则可以使用URL重定向服务来为您执行此工作。我是一个叫做 EasyRedir 的创始人,但肯定还有其他人。

9
wgrrrr

域A需要具有与域B中相同的IP地址。在A的定义中不需要任何对B的引用。 Web浏览器不会“跟随” CNAME作为重定向,它们将保留相同的主机名,并使用CNAME自己的记录来解析为IP地址。

如果希望当访问A时B出现在浏览器中(可选,并且与DNS不相关),则需要匹配HTTP主机并在Web服务器上重定向请求。使用Apache,您可以在虚拟主机定义中使用mod_rewrite做到这一点:

RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?domainB.com$
RewriteRule ^/(.*)$ http://www.domainA.com/$1 [R=301,L]
5
Kl4m

当然,可以使用以下技巧进行重定向:

  1. 创建一个新的标准主要区域
  2. 将其命名为您要重定向到的虚拟URL
  3. 确保此虚拟名称与任何AD DNS名称不同
  4. 使用以下条目创建A记录:

空白....................... A ..................................... ... ip-addr-2

www .......................................... A ............................... ..... ip-addr-2

本质上,这里我们是重定向。一个有效的URL将根据现有的DNS主DNS区域进行解析。虚构的URL将被重定向到ip-addr-2。重要的是该条目的名称为空,因此它将落入记录中的下一个条目并重定向到ip-addr-2

0
Bran Kop