Ubuntu

mod_vhost_alias VirtualDocumentRoot 許多域

  • April 17, 2013

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

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

對於像我這樣的域,example.com我希望所有請求都指向www.exapmple.comexample.com指向一個名為 like 的目錄/var/webroot/example.com,而對於諸如 的域example.co.uk,我希望所有請求都指向www.example.co.ukexample.co.uk指向一個名為/var/webroot/example.co.uk

我現在擁有的VDR看起來像這樣……

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

它抓住倒數第二個和最後一個部分。這適用於example.comexample.co.uk它正在尋找一個目錄/var/webroot/co.uk- 這並不理想!

有沒有解決的辦法?我需要使用mod_rewrite嗎?如果需要,如何使用?

在這種情況下,我只是分解符號連結而不是使用非常具體的(並且可能很脆弱)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/webroot撕下。www

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

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