2009-09-02 49 views
4

我在.htaccess文件中的以下內容:Apache的SetEnvIf之後麻煩

SetEnvIf Host "^example\.com$" myvar=1 
<IfDefine myvar> 
    RewriteRule ^(.*)$ index2.php?q=$1 [L,QSA] 
</IfDefine> 

據我所知,這應該正常工作。然而,當我訪問example.com時,「myvar」似乎沒有被定義。我知道我已啓用mod_setenvif.c(我已通過< IfModule>塊進行驗證)。

任何想法爲什麼「myvar」沒有被定義?

回答

6

這實際上是一個ServerFault問題,但無論如何:IfDefine不測試環境變量,它測試在啓動時傳遞給Apache的配置選項。因此,例如,如果運行

apache2 -D MYVAR 

那麼部分

<IfDefine MYVAR> 
    ... 
</IfDefine> 

將得到執行。

我不確定是否有任何Apache配置指令充當環境變量的條件,就像您正在尋找的那樣。

+0

那麼有沒有辦法用'SetEnvIf'來測試一個變量集合? – 2009-09-02 17:33:15

+0

您可以使用'RewriteCond'來創建一個重寫條件,該條件取決於環境變量的值......除此之外,我不確定是否有其他使用環境變量的指令。他們主要是爲CGI腳本等。 – 2009-09-03 06:40:25