2017-04-10 118 views
0

我有一臺安裝了lampp的雲服務器。我曾在這裏配置了虛擬主機這樣的:訪問具有虛擬主機的服務器apache

<VirtualHost xx.xxx.xx.xxx:80> 
    DocumentRoot "/opt/lampp/htdocs/folder/" 
    ServerName www.xxx.com 
</VirtualHost> 

和一切工作,因爲我想到,如果我去www.xxx.com我看到我的「文件夾」的網站。
現在我需要工作到同一臺服務器上的另一個站點,但它並沒有一個域,所以我想(通過閱讀Apache的配置文件解釋),我必須這樣做:

<VirtualHost xx.xxx.xx.xxx:80> 
    DocumentRoot "/opt/lampp/htdocs/folder/" 
    ServerName www.xxx.com 
</VirtualHost> 
<VirtualHost xx.xxx.xx.xxx:80/test> 
    DocumentRoot "/opt/lampp/htdocs/test/" 
</VirtualHost> 

但它不工作,如果我做http://xx.xxx.xx.xxx:80我到了「文件夾」網站,而如果我做http://xx.xxx.xx.xxx:80/test而在到達「測試」的網站,我仍然達到www.xxx.com,爲什麼呢?我怎麼能達到這個目標?

回答

1

首先定義的虛擬主機(最上面)用作默認主機。用於響應請求中的特定主機名匹配的任何傳入請求而不是

你想嘗試這種設置:

# some fallback host for testing and development 
<VirtualHost xx.xxx.xx.xxx:80> 
    DocumentRoot "/opt/lampp/htdocs/_default" 
</VirtualHost> 
# a virtual host with a specific host name 
<VirtualHost xx.xxx.xx.xxx:80> 
    DocumentRoot "/opt/lampp/htdocs/example.com" 
    ServerName example.com 
    ServerAlias www.example.com 
</VirtualHost> 

(這裏xx.xxx.xx.xxx代表了系統公共和路由的IPv4地址)

在你的文件系統,你有這樣的層次:

/opt/lampp/htdocs/ 
        _default/ 
          test1/ 
          test2/ 
        example.com/ 

這樣請求http://example.comhttp://www.example.com被映射到文件夾/opt/lampp/htdocs/example.com,請求URL爲任何其他主機名稱爲默認文件夾/opt/lampp/htdocs/_default,您現在可以在其中爲不同的應用程序創建任意數量的子文件夾。

另一種方法是在現有域名下面使用其他主機名進行內部測試,所以類似test1.example.com或類似名稱。這樣您就不必使用原始IP地址來承擔路由風險。

+0

完美而準確的答案,一切正常 – mautrok