Apache-2.4
為什麼虛擬主機出錯時 htdocs 不顯示目錄?
我剛剛在新的 Windows 機器上設置了 Apache v2.4、PHP 和 MySQL。我只對
httpd.conf
. 我包括httpd-vhosts.conf
,它定義了 2 個自定義站點(我從中刪除了預設dummy
站點),它們都是 WordPress 站點。其中一個 WordPress 站點沒有數據庫,當我轉到
htdocs
根目錄時,我看到該站點的數據庫連接錯誤。當我註釋掉DocumentRoot
虛擬主機的行時,目錄列表再次出現。以下是(按順序)的所有 -
Directory
相關行:httpd.conf
Define SRVROOT "C:/webserv/Apache24" ServerRoot "${SRVROOT}" <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "${SRVROOT}/htdocs" <Directory "${SRVROOT}/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
這是導致問題的虛擬主機:
<VirtualHost *:80>#gutenberg DocumentRoot "${SRVROOT}/htdocs/gutenberg" ServerName gutenberg.squarestarmedia.ie ErrorLog "logs/gutenberg.localhost-error.log" </VirtualHost>
(請注意,我使用我的
hosts
文件指向 ServerName)。我應該提到我正在
htdocs
從不同的驅動器對目錄進行符號連結,但是我在另一台沒有遇到相同問題的 Windows 機器上進行了非常相似的設置。如何修復它以便
htdocs
始終顯示目錄列表,即使子目錄/虛擬主機有錯誤?
看來,預設情況下,伺服器在轉到
localhost
根目錄時會為虛擬主機文件中的最頂層站點提供服務。解決方案是為根 htdocs 目錄本身包含一個虛擬主機。httpd-vhosts.conf
:<VirtualHost *:80># DocumentRoot "${SRVROOT}/htdocs" ServerName localhost ErrorLog "logs/localhost-error.log" </VirtualHost>
有了這個在我的虛擬主機文件的底部,
localhost
無論如何都會返回一個目錄列表。