Apache設定ファイルでIncludeファイルにパラメータを渡す方法
やりたいこと
個人用開発環境を沢山作りたい時にApache設定ファイルの内容が冗長化してしまうので整理したい。 Includeで共通化をしてみたものの一部の記述が特定の環境に依存してしまったため、パラメータを渡すなりして他の個人用開発環境にも応用したい。
RewriteEngine on RewriteRule ^/contents.php$ - [L] RewriteRule ^/hoge/(.*)$ http://1.dev.new.hoge.com/hoge/$1 [L,P]
<VirtualHost *:80> DocumentRoot "/home/httpd/dev1/hoge.com/htdocs" ServerName 1.dev.hoge.com Include conf.d/include/rewrite_rule.conf . . . </VirtualHost>
対応方法
SetEnvIf
ディレクティブを使うことで解決した。
SetEnv
ディレクティブでも環境変数を制御することができるが、Includeの直前に設定してもInclude先の設定ファイル側では環境変数を参照することができなかった。
SetEnv
ではなくSetEnvIf
を使うことで環境変数を参照することができた。
RewriteEngine on RewriteRule ^/contents.php$ - [L] RewriteRule ^/hoge/(.*)$ http://%{ENV:ENV_NO}.dev.new.hoge.com/hoge/$1 [L,P]
<VirtualHost *:80> DocumentRoot "/home/httpd/dev1/hoge.com/htdocs" ServerName 1.dev.hoge.com SetEnvIf _ .* ENV_NO=1 Include conf.d/include/rewrite_rule.conf . . . </VirtualHost>