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>