2013-11-23 156 views
0

我對大多數Web服務器配置都具有相當的能力,但是我遇到了問題。針對唯一子域名和域名目錄的Apache設置

我有一個VPS安裝一個子域。目前,鏈接sub1.domain.com指向public_html/www文件夾的根目錄。

我現在正在研究創建新的子域以及使用domain.com指向wordpress安裝。

從我的理解,我必須編輯Apache httpd.conf文件,但我不確定如何做到這一點。我期望我必須將domain.com指向子目錄以及sub2.domain.com指向不同的子目錄。像下面這樣。

sub1.domain.com >> rootPathForApache/ 
domain.com >> rootPathForApache/domain.com/ 
sub2domain.com >> rootPathForApache/sub2/ 

請問有人請指點我正確的方向。

親切的問候,

回答

1

你有幾個選擇:

選項1: Apache的<VirtualHost> directive可以解決這個問題(多)。這僅適用於server config context

<VirtualHost *:80> 
    DocumentRoot "rootPathForApache/" 
    ServerName sub1.domain.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "rootPathForApache/domain.com/" 
    ServerName domain.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "rootPathForApache/sub2/" 
    ServerName sub2domain.com 
</VirtualHost> 

選項2:使用在rootPathForApache .htaccess文件與mod_rewrite模塊加載,引進ServerAlias directive到任何現有的<VirtualHost>指令。

的.htaccess的內容(或者,如果你想在虛擬主機指令本身內):

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^sub1.domain.com 
RewriteRule ^(.*)   $1 [L] 

RewriteCond %{HTTP_HOST} ^domain.com 
RewriteRule ^(.*)   domain.com/$1 [L] 

RewriteCond %{HTTP_HOST} ^sub2domain.com 
RewriteRule ^(.*)   sub2/$1 [L] 

...和ServerAlias

ServerName domain.com 
ServerAlias sub1.domain.com sub2domain.com 

後者的解決方案(選項2)似乎只是可笑特別是因爲ServerAlias僅在VirtualHost指令中可用,並且mod_rewritehtaccess文件會增加不必要的開銷。這和看起來不自然。我想它說明了Apache配置和模塊的靈活性。