mod_vhost_alias VirtualDocumentRoot 許多域
我確信我不是第一個遇到這個問題的人,但我一輩子都找不到答案——儘管這可能是因為不知道要搜尋什麼。
我需要在 Ubuntu 伺服器上託管許多客戶端網站。一切執行良好,但我想設置動態虛擬主機,以便我可以自動化在伺服器上創建 wordpress 站點的過程。我已經讓
mod_vhost_alias
模組工作了,對此很滿意,但是,我遇到了.com
域與.co.uk
域的問題,.com.au
並且VirtualDocumentRoot
對於像我這樣的域,
example.com
我希望所有請求都指向www.exapmple.com
並example.com
指向一個名為 like 的目錄/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
嗎?如果需要,如何使用?
在這種情況下,我只是分解符號連結而不是使用非常具體的(並且可能很脆弱)
RewriteRule
:使用
VirtualDocumentRoot /var/webroot/%0
, 然後在內部/var/webroot/
創建一個符號連結以www.example.com
指向example.com
. 這將適用於您需要的任何深度的域,此外,如果您的站點www
由於某種原因應該具有不同的內容,或者您希望指向aaa.example.com
與example.com
.如果這不符合您的喜好,那麼您確實可以使用
mod_rewrite
:DocumentRoot /var/webroot RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$ RewriteRule ^/(.*)$ /%2/$1
那將始終在 中查找域名,如果在查找之前就將其從前面
/var/webroot
撕下。www
或者,您還可以重定向以刪除(或添加)
www
所有請求,而不是為兩個域提供相同的內容。