2013-11-10 137 views
1

我一直在尋找有關如何做到這一點的文章,但我找到了任何詳細和直接的說明。我知道有很多這方面的信息,但也許我只是沒有找到正確的東西。Apache 2子域?

在我的域名控制面板中,我添加了blog.domain.com以轉到我的網絡服務器的IP地址。但是,在Apache的配置中,我希望能夠將blog.domain.com指向某個文件夾。

需要修改哪些文件以及需要添加哪些文件?

回答

4

您正在尋找NameVirtualHost。我一直使用它&它很好用!

目前尚不清楚您使用的是哪個操作系統,但一般而言,您需要首先激活NameVirtualHost以獲得所需的端口。我會假設你會使用端口80,這樣在你的Apache配置&設爲所以找到這一行:

NameVirtualHost *:80 

確保你的Apache配置設置列出端口80應該是這樣,但加入這裏僅供參考:

Listen 80 

然後對於你的子域,這裏是魔術發生的地方。再次,我只是做基礎,以便調整到任何服務器設置爲:

<VirtualHost *:80> 
    ServerName blog.domain.com 
    ServerAlias blog.domain.com 

    DocumentRoot /var/www/blog.domain.com 

</VirtualHost> 

的關鍵是ServerNameVirtualHost通配符。這基本上說,「好吧,我們在端口80上使用NameVirtualHost,這個配置是爲服務器名blog.domain.com,所以我會注意在這個配置&所有選項只適用於blog.domain.comDocumentRoot應該是我在這個配置中指出的。「

編輯:根據下面的原始海報評論添加額外的建議。

首先,請不要以任何方式編輯/etc/apache2/sites-available/default。相反,請爲您的新子域創建一個新的配置文件。這使得它更容易管理。我會假設你需要運行sudonano編輯我的例子:

sudo nano /etc/apache2/sites-available/blog.domain.com.conf 

而且VirtualHost東西我上面添加到新blog.domain.com.conf文件。當然,請確保您的VirtualHost指令符合您的要求;我的只是一個簡單的例子。

現在,如果這樣做了,你需要創建一個sites-available的符號鏈接sites-enabled像這樣:

sudo ln -s /etc/apache2/sites-available/blog.domain.com.conf /etc/apache2/sites-enabled/blog.domain.com.conf 

好吧,這一切都做了什麼?因爲你似乎有一個類似於Ubuntu 12的類似Apache2配置佈局。04服務器我已經工作過,走在這個文件,看看是否NameVirtualHost設置:

sudo nano /etc/apache2/ports.conf 

您應該看到兩行,像這樣:

NameVirtualHost *:80 
Listen 80 

好吧,讓我來!現在,重新啓動Apache &你應該設置!

如果要測試,請在文檔根目錄中爲其中包含此行的子域創建一個測試文件;我假設你可以使用PHP:

<?php 
echo $_SERVER['SERVER_NAME']; 
?> 

如果所有的作品,它應該回顯主機的子域目錄設置爲:blog.domain.com

+0

非常感謝傑克!只是爲了確保我在正確的文件中,我們在討論/ etc/apache2/sites-available/default? 此外,由於已有部分,是否需要添加包含該信息的附加信息? – LewlSauce

+0

擴大我的答案。基本上,這個'default'文件應該被保留。這是一個示例文件。如果您想添加更多虛擬主機,最好爲每個虛擬主機添加具有特定指令的新文件。使管理更容易。我的意思是,你可以把它全部放在'default'中,但過了一會兒你就會有一堆指令,並且可能會感到困惑。總是最好隔離配置。 – JakeGould

+0

非常感謝這麼多人。一個更快的問題。至於我的域名設置,我需要添加/修改什麼?就像目前,我只是將它配置爲blog.domainname.com將會轉到我的VPS的IP地址,並且我想也許Apache上的配置會處理其餘的。然而,我認爲這很可能是錯誤的。 – LewlSauce