如何將外部網域指向子網域?

如何將外部網域指向子網域?

我擁有該網域example.com,並設定了 Ubuntu Apache 伺服器,將任何子網域指向具有相同名稱的目錄。

<VirtualHost *:80>
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/html/%1
</VirtualHost>

所以subdomain.example.com會指向example.com/subdomain.

我試圖允許用戶將他們自己的自訂網域指向他們選擇的子網域,我如何實現這一點以及需要哪些記錄以及必須對虛擬主機

我嘗試過以下記錄:

  • sampledomain.example別名記錄記錄)-- @>sample.example.com
  • sampledomain.example (A記錄) - @--> ( IPexample.com 的地址)

我還嘗試使用wwwCNAME 並刪除A record.

sample.example.com成功指向example.com/sample.但是,sampledomain.example由於某種原因,其行為類似於根站點。

因此,如果我訪問sampledomain.example/sample,我將獲得 的內容example.com/sample而不是指向sample.example.com

我該如何解決這個問題?需要哪些記錄以及可以對虛擬主機執行哪些操作?

我使用了 CNAME 記錄,以便當使用者存取該記錄時,我可以透過 PHP 檢索自訂網域 - 是否需要 CNAME?

答案1

如果您願意根據客戶的要求手動執行此操作,那麼這很容易。您所要做的就是新增ServerAlias sampledomain.com至虛擬主機配置並重新載入 Web 伺服器配置。

但是,如果您想讓客戶在某種客戶控制介面中自行執行此操作,由於 Web 伺服器上的虛擬主機的工作方式,這並不容易實現。原因如下:

如果您有任何 DNS 記錄(無論是否ACNAME)對應sampledomain.com到您的 Web 伺服器,瀏覽器將向您的伺服器 IP 位址傳送請求,並將 HTTPHost標頭設定為sampledomain.com。 Web 伺服器將使用此標頭來決定哪個虛擬主機應該處理此問題,如果sampledomain.com既不是虛擬主機名稱也不是別名,則請求將由預設虛擬主機回應,就像您所經歷的那樣。

為了實現這一點,您需要一種方法讓您的客戶為其虛擬主機配置別名。對於 Apache,這並不容易,但理論上您可以從資料庫中讀取此內容,如所解釋的這裡(我從未嘗試過這個,所以我不知道這是否有效)。

另外,諸如此類的事情虛擬最小在這種情況下可能會有所幫助。

相關內容