Domain-Name-System

如何僅使用 A-Records 和 CNAME 記錄將域 A 重定向到域 B

  • August 27, 2018

我有 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

我已經嘗試過this other post的建議,但沒有奏效。

請問如何僅使用 A-Records 和 CNAME 來實現這一點?感謝您的意見。

普雷姆博。

因此,您不是在關注重定向(因為這發生在應用程序級別,即在 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 ,然後這只是一個簡單的問題:

  1. 創建一個特定的基於 Apache 名稱的虛擬主機 - 它將從自己的 DocumentRoot 提供文件
  2. 像這樣在 Apache 上創建永久重定向:

這會將任何來到 DomainB 的內容重寫為 DomainA 可以託管在同一台伺服器或其他地方。如果您可以/被允許在 apache 上創建基於名稱的虛擬主機,我很欣賞第二個選項可能是成本並且不是必需的。

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

我會選擇 1. - 將 DomainA 的所有 DNS 記錄指向與 DomainB 指向的 IP 相同的 IP,並在 Apache 上創建特定的基於名稱的虛擬主機。

引用自:https://serverfault.com/questions/385893