1. 程式人生 > >Apache配置虛擬目錄和多主機頭

Apache配置虛擬目錄和多主機頭

本文轉載自:http://www.cnblogs.com/lzrabbit/archive/2013/03/05/2944804.html

多個虛擬目錄

  首先把Apache安裝到D:\Program Files\Apache2.2目錄下,埠號設定為8080,安裝完成後預設的網站根目錄為D:\Program Files\Apache2.2\htdocs,通常我們可以在htdocs下面建立個資料夾MySite,然後在瀏覽器輸入:http://localhost:8080/MySite 這樣就可以看到我們自己的站點了。然而有時我們想把站點放到其它目錄下面,這時就需要配置虛擬目錄了
比如我們在D盤建立如下資料夾D:\Code\WebSite,然後通過http://localhost:8080/DemoSite來訪問這個站點

開啟httpd.conf檔案,搜尋<IfModule alias_module> 節點,然後在節點內輸入以下內容:

#下面是虛擬目錄宣告格式
#Alias用來定義虛擬目錄及虛擬目錄路徑,其中虛擬目錄名稱用於URL訪問的路徑別名,可以和虛擬目錄名稱不同
#<Directory/>節點用於定義目錄的訪問許可權等
#
#Alias 虛擬目錄名稱 虛擬目錄路徑
#<Directory 虛擬目錄路徑>
#   Options Indexes FollowSymLinks
#   AllowOverride All
#   Order allow,deny
#   Allow from all
#</Directory>

#下面是具體的示例,/DemoSite是目錄別名 "D:/Code/WebSite"是虛擬目錄的實際路徑
Alias /DemoSite "D:/Code/WebSite"

<Directory "D:/Code/WebSite">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
重啟Apache服務後,在瀏覽器輸入http://localhost:8080/DemoSite就可以正常訪問了
這裡需要注意下目錄儘量使用"/",而不是使用"\",原因就是"\"代表轉義符有些情況下會導致莫名奇妙的錯誤,下面附上完整的<IfModule alias_module>節點以供參考
<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://localhost/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "D:/Program Files/Apache2.2/cgi-bin/"
    
    Alias /DemoSite "D:/Code/WebSite"

    <Directory "D:/Code/WebSite">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</IfModule>

多主機頭繫結
(就是在一個埠上繫結多個域名,然後每個域名可以指向不同的目錄進行訪問,主機頭是IIS裡面的說法),開啟httpd.conf檔案,在檔案最後新增如下內容
#多主機頭配置無需放在特定的節點下面,一般直接在配置檔案底部新增即可
#NameVirtualHost addr[:port] 為一個基於域名的虛擬主機指定一個IP地址(和埠)
#宣告主機頭必須加這條指令,否者主機頭配置不會生效
#VirtualHost節點下面ServerName就是要繫結的域名,DocumentRoot表示此域名指向的目錄
#本機測試的話請在hosts中進行域名繫結如 127.0.0.1  www.mysite1.com

NameVirtualHost *:8080
<VirtualHost *:8080>
    ServerName www.mysite1.com
    DocumentRoot "D:\Program Files\Apache2.2\htdocs"
</VirtualHost>

<VirtualHost *:8080>
    ServerName www.mysite2.com
    DocumentRoot "D:\Code\MySite"
</VirtualHost>

配置好後,重啟apache服務,瀏覽器輸入www.mysite1.com:8080,就會自動定向到D:\Program Files\Apache2.2\htdocs站點了

輸入www.mysite2.com:8080就會自動定向到D:\Code\MySite站點,如此就可以實現在一個伺服器上同時執行多個站點

注:此文章屬懶惰的肥兔原創,版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線
若您覺得這篇文章還不錯請點選下右下角的推薦,有了您的支援才能激發作者更大的寫作熱情,非常感謝。
如有問題,可以通過[email protected]聯絡我。