
我確信我不是第一個遇到這個問題的人,但我一生都無法找到答案 - 儘管這可能是因為不知道要搜尋什麼。
我需要在 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.com
與example.com
.
如果這不符合您的喜好,那麼您確實可以使用mod_rewrite
:
DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1
這將始終在 中尋找域名/var/webroot
,www
如果在查找之前存在,則將前面的域名撕掉。
或者,您也可以重定向以刪除(或新增)www
所有請求,而不是為兩個網域提供相同的內容。