mod_vhost_alias VirtualDocumentRoot 許多網域

mod_vhost_alias VirtualDocumentRoot 許多網域

我確信我不是第一個遇到這個問題的人,但我一生都無法找到答案 - 儘管這可能是因為不知道要搜尋什麼。

我需要在 Ubuntu 伺服器上託管許多客戶端網站。一切都運作良好,但我想設定動態虛擬主機,以便我可以自動化在伺服器上建立 WordPress 網站的過程。我已經讓mod_vhost_alias模組正常工作了,對此我很滿意,但是,我遇到了.com域與.co.uk.com.au域的問題以及VirtualDocumentRoot

example.com對於諸如 之類的網域,我希望所有請求都www.exapmple.com指向example.com一個名為 的目錄/var/webroot/example.com,對於諸如 之類的網域example.co.uk,我希望所有請求都www.example.co.uk指向example.co.uk一個名為 的目錄/var/webroot/example.co.uk

我現在的VDR看起來像這樣...

VirtualDocumentRoot /var/webroot/%-2.0.%-1.0

它抓住了倒數第二個和最後一個部分。這非常適合,example.com但因為example.co.uk它正在尋找目錄/var/webroot/co.uk- 這並不理想!

有沒有解決的辦法?我需要使用嗎mod_rewrite

答案1

在這種情況下,我只是分解符號鏈接,而不是使用非常具體的(並且可能脆弱的)RewriteRule

使用VirtualDocumentRoot /var/webroot/%0,然後在內部/var/webroot/建立一個符號連結以www.example.com指向 的真實目錄example.com。這將適用於您需要的深度域,此外,如果您的網站www由於某種原因應該具有不同的內容,或者您​​想指向aaa.example.comexample.com.

如果這不符合您的喜好,那麼您確實可以使用mod_rewrite

DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1

這將始終在 中尋找域名/var/webrootwww如果在查找之前存在,則將前面的域名撕掉。

或者,您也可以重定向以刪除(或新增)www所有請求,而不是為兩個網域提供相同的內容。

相關內容