2009-09-02 1 views
4

私は私の.htaccessファイルに次のようしている:私の知る限りのApacheのSetEnvIfトラブル

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

、これは適切に動作しなければなりません。しかし、 "myvar"はexample.comからアクセスしたときに定義されていないようです。私はmod_setenvif.cを有効にしていることを知っています(< IfModule>ブロックで検証済み)。

"myvar"が定義されていない理由はありますか?

答えて

6

これは本当にServerFaultの質問ですが、とにかく:IfDefineは環境変数をテストしません。起動時にApacheに渡された設定オプションをテストします。だから、例えば、あなたがして

apache2 -D MYVAR 

を実行した場合のセクション

<IfDefine MYVAR> 
    ... 
</IfDefine> 

が実行になるだろう。

あなたが探しているように、環境変数の条件として機能するApache設定ディレクティブがあるかどうかはわかりません。

+0

'SetEnvIf'で変数セットをテストする方法はありますか? –

+0

'RewriteCond'を使って、環境変数の値に依存する書き換え条件を作成できます。それ以外の環境変数を使うディレクティブがあるかどうかはわかりません。 CGIスクリプトなどのためのものです –