Apache-2.2

Apache - 如何在 httpd.conf 中為虛擬主機的 VirtualDocumentRoot 創建異常?

  • March 21, 2013

我是 Apache 的新手,我想知道是否有一種方法可以配置VirtualDocumentRoot為我的本地伺服器上的一個虛擬主機創建異常。目前我所有的網站都儲存在具有約定的文件夾中sitename.dev。在httpd.confVirtualDocumentRoot根據伺服器名稱動態設置:

# 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

我也用ScriptAliasand 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>

引用自:https://serverfault.com/questions/489916