apacheのSetEnvとSetEnvIf
リクエストヘッダを参照してACLを設定したい。
<Directory "/hoge"> <If "-n req('X-hoge')"> SetEnv fuga </If> Order deny,allow Deny from all Allow from localhost Allow from env=fuga </Directory>
ところが、期待したとおりに動作しない。全部denyされる。ヘッダが設定されていないのかと、Forrensicログをとってみたところ、ちゃんと設定されている。
おかしいなぁとドキュメントを眺めてみても文法的にはあっている。
ふと思いついてこうやって見たら期待通りの動作。
<Directory "/hoge"> <If "-n req('X-hoge')"> SetEnvIf REQUEST_URI .* fuga </If> Order deny,allow Deny from all Allow from localhost Allow from env=fuga </Directory>
SetEnvで設定した環境変数と、SetEnvIfで設定した環境変数では参照できるディレクティブに違いがあるのか。うーん、バグじゃないか、という気がする。