我了解如何使用 Directory 和(我認為)VirtualHost 指令。我進一步了解我不能混合它們(儘管我可以嵌套它們)。當我混合使用它們時,我得到 404 not found for the Directory-type URLs that used work.
那麼,我該如何支援在設定檔中瀏覽「localhost/my/website」和「mydomainname.com」等 URL?
我的理由:我想讓 mydomainname.com 使用 https,同時讓其他網站使用 http。我已經在我的 HOSTS 檔案(我的本地 DNS)中將 mydomainname.com 轉換為 127.0.0.1,所以我想我一定已經接近解決方案了。
我已經為此工作了幾個小時,但沒有真正取得任何進展。 Apache 文件對我沒有幫助。
理想情況下,有人可以為我描繪出如何實現我想要的目標。
答案1
根據這個問題,我認為您不明白Directory
和之間的區別VirtualHost
。
<Directory>
和</Directory>
用於包含一組僅適用於指定目錄、該目錄的子目錄以及相應目錄中的文件的指令。
<VirtualHost>
並</VirtualHost>
用於包含一組僅適用於特定虛擬主機的指令。可以使用虛擬主機上下文中允許的任何指令。當伺服器收到對特定虛擬主機上的文件的請求時,它會使用該<VirtualHost>
部分中包含的設定指令。
該<Directory>
指令不控制“目錄類型 URL”。這DocumentRoot
和Alias
指令控制在檔案系統中的位置找到內容。這些指令可以直接在伺服器配置中或在<VirtualHost>
.
對於您想要實現的目標,您只需要兩個<VirtualHost>
具有不同DocumentRoot
s 的 s,例如
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/examplecom"
ServerName example.com
</VirtualHost>
現在,您在同一個網站上擁有了http://localhost/examplecom/
和。http://example.com/
如果網站不全部位於同一檔案系統目錄下,則需要使用Alias
es,例如
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/user/sites/example.com"
ServerName example.com
</VirtualHost>