Pre*_*mbo 57 domain-name-system hosting domain a-record cname-record
我有 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.
Run Code Online (Sandbox Code Playgroud)
我想重定向
DomainA.com -> DomainB.com
*.DomainA.com -> *.DomainB.com
Run Code Online (Sandbox Code Playgroud)
我已经尝试过其他帖子中的建议,但没有奏效。
请问如何仅使用 A-Records 和 CNAME 才能实现此目的?感谢您的意见。
普莱博。
mil*_*dos 42
所以你不是在考虑重定向(就像在应用程序级别发生的那样,即在 Apache/Nginx/wherever 上),而是在 DNS 解析上。根据您的描述,托管 DomainA 的主机将或不应被命中,因为您希望将 DNS 请求解析为 DomainB 的 IP。除非我在您的请求中遗漏了什么?
正如 Shane 指出的那样,DNS 不能进行 HTTP 重定向——这是应用程序/网络服务器的职责。您可以将 DomainA 和 DomainB 解析为 DNS 上的相同 IP,并且所有这些都可以正常工作。但是,如果您希望以每个 URL/每个路径的方式执行此操作,那么这是不可能的 - DNS 无法做到这一点 - 这是一个简单的 DNS->IP 服务,实际 URL 发生的事情是网络服务器的任务。
在下面的评论之后,我要做的是将 DomainA 的所有 DNS 记录引用到与 DomainB 指向的 IP 相同的 IP——这样你就会得到 HTTP 请求到达 hostB,然后这只是一个简单的问题:
这会将进入 DomainB 的任何内容重写为可以托管在同一服务器或其他地方的 DomainA。我很欣赏第二个选项可能是一个开销,如果您可以/被允许在 apache 上创建基于名称的虚拟主机,则不是必需的。
<VirtualHost *:80>
ServerName DomainB
Redirect permanent / http://DomainA/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我会选择 1. - 将 DomainA 的所有 DNS 记录指向与 DomainB 指向的相同的 IP,并在 Apache 上创建特定的基于名称的 VirtualHosts。
小智 10
正如其他人所说,单独使用 DNS 执行 HTTP 重定向是不可能的。DNS 和 HTTP 协同工作,将用户从一个网页重定向到另一个网页。
您可以单独使用 DNS 使域 A 显示与域 B 相同的内容,但 Web 浏览器将在 URL 中显示域 A。您需要对此非常小心,因为从 SEO 的角度来看,这非常糟糕。你会因为“重复内容”而陷入困境,搜索引擎会因此惩罚你。
正确的(从 UX 和 SEO 的角度来看)完成这项工作的方法是执行从域 A 到域 B 的 HTTP 重定向。
如果您有技术能力,您可以手动配置您的 Web 服务器(Apache、Nginx、IIS 等)来为您完成这项工作。网络上有很多很好的资源可以帮助解决这个问题。
如果您不能或不想控制基础设施,您可以使用 URL 重定向服务来为您执行这项工作。我是一个名为EasyRedir的创始人,但肯定还有其他人。
小智 6
域 A 需要与域 B 具有相同的 IP 地址。在 A 的定义中不需要任何对 B 的引用。Web 浏览器不会“跟随” CNAME 作为重定向,它们将保留相同的主机名并使用 CNAME 自己的记录来解析 IP 地址。
如果您希望 B 在访问 A 时出现在浏览器中(可选且与 DNS 无关),则需要匹配 HTTP 主机并将请求重定向到 Web 服务器上。使用 Apache,您将使用 mod_rewrite 在虚拟主机定义中这样做:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domainB.com$
RewriteRule ^/(.*)$ http://www.domainA.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您确实想仅使用 DNS 记录重定向域并且可以使用第三方服务,则可以使用forwarddomain.net。
它的工作原理是将源域(例如www.olddomain.com)CNAME 设置为(或其 A+AAAA 记录),并通过将带有前缀(例如)的 TXT 记录写入带有前缀(例如)的域来r.forwarddomain.net设置目标域 URL 。完整的 DNS 记录将是:__.www.olddomain.comforward-domain=forward-domain=https://newdomain.net
www.olddomain.net. IN CNAME r.forwarddomain.net
_.www.olddomain.net. IN TXT forward-domain=https://newdomain.net/*
Run Code Online (Sandbox Code Playgroud)
这将重定向www.olddomain.net到newdomain.net,也适用于 HTTPS。
| 归档时间: |
|
| 查看次数: |
251529 次 |
| 最近记录: |