2016-05-21 57 views
1

我想模仿在Linux上啓用站點的行爲,但在Windows上使用Xampp,並且出現了一些問題。我希望有人能幫忙。Apache2:基於條件的包含單獨的「配置樹」

在Linux上,可以將PHPINIDIR指令放入特定的虛擬主機定義中,並且該值僅用於虛擬主機。這似乎工作,因爲虛擬主機是一個不同的「配置樹」,因此每個虛擬主機可以有自己的PHPINIDIR。

在默認的Xampp安裝中,有一個conf/extra/httpd-vhosts.conf,我可以在其中添加自己的虛擬主機定義,但這些全部加載在一起。因此它是「一個配置樹」,當我嘗試在每個不同的虛擬主機定義中放置不同的PHPINIDIR指令時(因爲該變量被定義爲不止一次),它會出錯。

我一直在閱讀關於mod_vhost_alias來看看我是否可以做一個條件包含。

例如根據主機名檢查文件是否存在,如果是的話加載配置文件。如果沒有,加載一個默認的。

<IfModule vhost_alias_module> 
    <If "-f 'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf'"> 
    Include "'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf'" 
    </If> 
    <Else> 
    Include "C:/dev/bin/apache/conf/vhosts/default.conf" 
    </Else> 
</IfModule> 

我不知道如果我的語法是錯誤的,或者如果vhost_alias_module僅適用於虛擬主機的指令來設置變量,但在任何情況下,上述錯誤了:

httpd: Syntax error on line 503 of C:/dev/bin/xampp/apache/conf/httpd.conf: Syntax error on line 43 of C:/dev/bin/xampp/apache/conf/extra/httpd-vhosts.conf: Invalid Include path 'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf' 

我沒有出售這個特定的解決方案,我願意提供建議。然而,我希望每個主機都有一個完全獨特的vhost.conf文件,因爲我希望能夠自定義更多的PHPINIDIR。

+0

這有幫助嗎? [更改每個虛擬主機的php值](http://serverfault.com/questions/461702/custom-phpinidir-setting-in-virtualhost-affecting-other-virtualhosts) – Aditya

+0

其實,是的,這絕對可以幫助解決我的問題。 – Doug

回答

0

沒有類似的東西會起作用。

雖然配置文件名是無關緊要的,但是如果在N個文件中有1個虛擬主機或在1個文件中有N個虛擬主機,則無關緊要。指令可以在虛擬主機中指定或不指定。

至於爲什麼你的計劃不起作用:

mod_vhost_alias'es%n個變量不可用於任何Apache其他指令,只是mod_vhost_alias提供的。

此外,<如果和任何有關mod_vhost_alias在請求處理時被解釋,而包含當讀取配置文件被處理。

0

Invalid Include path對我來說,它看起來像一個寡婦寡婦的路徑: 不應該是......。如C:\\dev\\bin\\...C:\dev\bin\...,具體取決於軟件如何處理反斜槓?