回答:
ドキュメントをざっと見てみましょう:
SetEnvIfディレクティブは、リクエストの属性に基づいて環境変数を定義します。最初の引数で指定される属性は、次の3つのいずれかです。
HTTP要求ヘッダーフィールド(これらの詳細については、RFC2616を参照)。たとえば、Host、User-Agent、Referer、およびAccept-Languageです。正規表現を使用して、一連の要求ヘッダーを指定できます。
したがって、環境変数をHostヘッダーに条件付きにすることは確かに可能です。RefererまたはRemote_Hostヘッダーを使用しようとしているように見えますが、どちらも必要なものではありません(理論的にRefererはHostほとんどの場合、ヘッダーの値を含める必要があります)。 リクエストを行うクライアントRemote_Hostのホスト名になりますが、これはまったく必要なものではありません(また、パフォーマンス上の理由でDNSルックアップをオフにするのが一般的であるため、ほとんどの構成では使用できません)。
次のようなものを試してください:
SetEnvIf Host "www-dev\.example\.com" ENV=DEV
SetEnvIf Host "www-production\.example\.com" ENV=PRD
...そして$ _SERVER ['ENV']を使用して、いくつかのロジックブランチを作成します
ただしHost、この詐欺を介さずに、PHPでヘッダーの値を直接参照することもできます。$_SERVER['HTTP_HOST']まさにあなたが望むものを持っています。
SetEnvIfドキュメントは、ドメイン名ではないドットがバックスラッシュでエスケープしなければならない第三paramは、正規表現であると言いますか?または、二重引用符で値を引用すると、Apacheはそれを文字列リテラルとして扱いますか?
"www-dev.example.com"正規表現はなどの予期しないホスト名にも一致しwww-dev-example.comます。予想されるマッチなどが得られます。サンプルを更新しました。