我在嘗試在 Apache 中定義多個虛擬主機時遇到了一個奇怪的問題。這是我的 httpd.conf 檔案程式碼:
<VirtualHost *:8888>
ServerName site1.local
DocumentRoot /Applications/MAMP/htdocs/site1/public
<Directory /Applications/MAMP/htdocs/site1/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:8888>
ServerName site2.local
DocumentRoot /Applications/MAMP/htdocs/site2/public
<Directory /Applications/MAMP/htdocs/site2/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
當我嘗試在瀏覽器中存取“site2.local”時,我被重定向到“site1.local”。我在 httpd.conf 檔案中插入的所有 VirtualHost 定義都會發生這種情況。當我想訪問“site2.local”或任何其他內容時,我需要將其 VirtualHost 定義放在頂部(作為第一個)。因此,我假設 Apache 僅正確執行第一個 VirtualHost。
另外,另一個問題:如果我嘗試存取 htdocs 資料夾中未在 VirtualHost 中定義的任何專案文件,我將收到一條訊息「禁止,您無權訪問此伺服器上的 /project/」。如果我想存取這些項目中的任何一個,我需要刪除 httpd.conf 檔案中的所有 VirtualHost 定義。
我做錯了什麼?
就我而言,這些(在 VirtualHost 中定義)是帶有 Zend Framework 的 PHP 專案。我正在使用 MacOSX。
謝謝
答案1
你失蹤了
NameVirtualHost *:8888
和
<VirtualHost _default_:8888>
DocumentRoot /www/default
</VirtualHost>
有關 apache 預設虛擬主機的更多信息,您可以閱讀此線上文檔
http://httpd.apache.org/docs/2.2/vhosts/examples.html