環境変数を持つ if 条件付きブロックを構築する方法の 1 つは、mod_macroモジュールを使用することです。ここで以前に例を作成しました。
この特定のケースでは、VirtualHost ファイルの上 (VirtualHost 定義の前) に次のようにします。
<Macro ConditionalBlockMacroSecurity_production>
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/file/.htpasswd
AuthGroupFile /dev/null
require valid-user
</Macro>
<Macro ConditionalBlockMacroSecurity_development >
<IfModule mod_headers.c>
Header set MyHeader "Hello this is DEVELOPMENT envirronment. It took %D microseconds for Apache to serve this request."
</IfModule>
</Macro>
そしてバーチャルホスト内:
Use ConditionalBlockMacroSecurity_${APP_ENV}
htpassword ファイルへのパスは、マクロのパラメーターとして設定することもできます。
このソリューションの欠点は、運用サーバーに mod_macro をインストールする必要があることです。これは一般的にインストールされるモジュールではなく、そのためには運用環境をある程度制御する必要があります。一方、簡単な解決策は、環境に応じて複数のバージョンの仮想ホストを用意し、Auth セクションにいくつかのコメントを追加することです。しかし、一般的な解決策を探している場合、それは確かにそれが再発する問題であり、ファイルの手動編集を避けたいことを意味します。そのような場合、mod_macro は、Apache の設定が単一のマクロになるまで、Apache の経験を活用するための非常に専門的な方法になる可能性があります。パラメータを使用して、他の多くのマクロを呼び出します。