Apache-2.2
Apache - 如何在 httpd.conf 中為虛擬主機的 VirtualDocumentRoot 創建異常?
我是 Apache 的新手,我想知道是否有一種方法可以配置
VirtualDocumentRoot
為我的本地伺服器上的一個虛擬主機創建異常。目前我所有的網站都儲存在具有約定的文件夾中sitename.dev
。在httpd.conf
我VirtualDocumentRoot
根據伺服器名稱動態設置:# get the server name from the Host: header UseCanonicalName Off LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon CustomLog /path/to/logs/access.log vcommon ErrorLog /path/to/logs/errors.log VirtualDocumentRoot /path/to/vhosts/%0
這對我的所有站點都非常有用,但有一個例外……其中一個站點的文件根目錄應該指向
exception.dev/src/php
而不是僅僅指向exception.dev
.根據我在這裡找到的答案,聽起來好像
VirtualDocumentRoot
不能基於條件進行設置。所以我希望我的問題可以通過設置某種別名來指向exception.dev
正確的目錄來解決。我嘗試添加
VirtualScriptAlias
,但這會阻止 Apache 伺服器啟動:VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php
我也用
ScriptAlias
and just嘗試過同樣類型的事情Alias
,但仍然沒有運氣。我在這裡缺少什麼嗎?或者我想做的事情是不可能的?任何幫助將不勝感激!
哦,如果有幫助,這是我執行時的輸出
httpd -S
:httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName VirtualHost configuration: Syntax OK
更新:我通過如下修改Shane的答案來實現這一點:
NameVirtualHost * <VirtualHost *:80> ServerName exception.dev DocumentRoot /path/to/vhosts/exception.dev/src/php </VirtualHost> <VirtualHost *:80> ServerName default ServerAlias *.dev VirtualDocumentRoot /path/to/vhosts/%0 </VirtualHost>
擁有一個帶有“正常”配置的虛擬主機
VirtualDocumentRoot
,以及另一個帶有異常配置的虛擬主機。NameVirtualHost *:80 <VirtualHost *:80> ServerName default ServerAlias *.dev VirtualDocumentRoot /path/to/vhosts/%0 </VirtualHost> <VirtualHost *:80> ServerName exception.dev DocumentRoot /path/to/vhosts/exception.dev/src/php </VirtualHost>