我有两个托管不同主机的域名.我需要将域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
我已经尝试过这个other post的建议,但它没有用.
我怎么能只用A-Records和CNAME实现这个呢?感谢您的意见.
Prembo.
解决方法
所以你不是在考虑重定向(就像在应用程序级别那样,即在Apache / Nginx / where),而是在DNS解析上.根据您的描述,您希望将DNS请求解析为DomainB的IP,将托管或不应该托管托管DomainA的主机.除非我在你的请求中遗漏了什么?
正如Shane所指出的,DNS无法进行HTTP重定向 – 这是应用程序/网络服务器的职责.您可以使DomainA和DomainB解析为DNS上的相同IP,并且一切都可以.但是,如果您希望按照每个URL /每个路径的方式执行此操作,那么这是不可能的 – DNS无法做到这一点 – 它是一个简单的DNS-> IP服务,实际URL发生的是Web服务器的任务.
在下面的评论之后,我要做的是将DomainA的所有DNS记录引用到与DomainB指向的相同的IP – 这样您将获得HTTP请求命中hostB然后它只是一个简单的问题:
>创建一个特定的Apache Name Baseed虚拟主机 – 它将从自己的DocumentRoot提供文件
>在Apache上创建永久重定向,如下所示:
这将重写DomainB到DomainA的任何内容,它可以托管在同一台服务器上或其他地方.我很欣赏第二个选项可能是开销,如果你可以/允许在apache上创建基于名称的虚拟主机,则不需要.
<VirtualHost *:80> ServerName DomainB Redirect permanent / http://DomainA/ </VirtualHost>
我将使用1. – 将DomainA的所有DNS记录指向与DomainB指向的相同IP,并在Apache上创建特定的基于名称的VirtualHosts.