一般來說,服務器是可以托管多個網站的,只要服務器開啟虛擬主機的功能,原理是根據來源的host進行判斷,不同的域名實現不同的文件訪問,這樣就可以實現一個服務器托管不同網站了,只要服務器的性能和帶寬足夠強大,理論可以托管的網站無上限。
但是如果在本地怎樣實現開啟虛擬主機呢?因為本地是使用localhost或者127.0.0.1進行訪問的,無法使用其他的域名,服務器無法判斷請求的域名的區別,也就無法判斷訪問的是網站的兩個文件夾。
深入一點就會涉及到DNS的知識,其實就是域名到ip的轉換過程,訪問localhost的時候其實就是本地的DNS服務將localhost轉換成127.0.0.1,從而實現的訪問。
DNS的服務器一般是空間商提供的,要實現本地不同的域名,訪問同一個ip要怎么實現呢?DNS不僅在專業的服務器上存在,而且在Windows電腦和瀏覽器系統中都會有DNS的緩存,電腦上的host文件,記錄着域名與ip之間的對應關系。文件位置c:\windows\system32\drivers\etc\hosts
在文件最下方添加一條記錄,127.0.0.1 local.com,這樣訪問local.com這個域名的時候,就會訪問本地的ip 127.0.0.1,前提是開啟了本地服務器,當然你覺得好玩的話,可將百度的域名添加的本地,127.0.0.1 baidu.com 瀏覽器訪問baidu.com的時候會訪問本地127.0.0.1(黑客早期的時候入侵電腦其中一種就是host劫持.)
修改好了host文件后(需要管理員權限),我們就有了兩個域名了,(localhost與local.com)怎樣實現不同的域名訪問不同的文件目錄從而實現兩個站點呢?需要開啟Apache的虛擬主機的功能。
假設apache安裝在x:\apache ,那么先打開x:\apache\conf\httpd.conf,查找"Include conf/extra/httpd-vhosts.conf" 若前面有‘#’將其刪掉,若沒有這行語句,則手動添加。
接着到 x:\apache\conf\extra目錄中找到或新建httpd-vhosts.conf文件,可以看見:
文件中的內容之間復制粘貼一份就好了,因為不同Apache版本具體的內容不一樣,然后修改servername 和DocumentRoot,(前提是已經在host文件中添加了local.com),以及文件的路徑,默認在c:/wamp64/www,現在新建一個文件夾wwww,並在配置文件中添加路徑c:/wamp64/wwww. 這樣就實現使用域名localhost的訪問的是網站的www文件夾,使用local.com訪問的網站的文件夾是wwww。