如何僅使用 A-Records 和 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
我已經嘗試過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 ,然後這只是一個簡單的問題:
- 創建一個特定的基於 Apache 名稱的虛擬主機 - 它將從自己的 DocumentRoot 提供文件
- 像這樣在 Apache 上創建永久重定向:
這會將任何來到 DomainB 的內容重寫為 DomainA 可以託管在同一台伺服器或其他地方。如果您可以/被允許在 apache 上創建基於名稱的虛擬主機,我很欣賞第二個選項可能是成本並且不是必需的。
<VirtualHost *:80> ServerName DomainB Redirect permanent / http://DomainA/ </VirtualHost>
我會選擇 1. - 將 DomainA 的所有 DNS 記錄指向與 DomainB 指向的 IP 相同的 IP,並在 Apache 上創建特定的基於名稱的虛擬主機。