プロが教える店舗&オフィスのセキュリティ対策術

.htaccessでSetEnvIf(条件分岐)させたいです。
以下のようにSetEnvIfを使った分岐を試みておりますが、
条件を満たしてくれません。

何が間違っているのでしょうか?
ご教授いただけませんでしょうか。
--------------------------------------------------------------------------
SetEnvIf Request_URI "\.com" IS_CHK

<IfDefine IS_CHK>
Redirect temp /test/ http://hoge.com/
</IfDefine>
--------------------------------------------------------------------------
尚、<IfDefine>~</IfDefine>内は、判りやすくリダイレクトにしましたが、ここはなんでもよいです。

A 回答 (1件)

私が調べさせていただいた範囲で申し上げると、



「SetEnvIfで設定した環境変数は、IfDefine内では利用できない」

という結論です。
IfDefineで変数を使用するためには、
Apacheの起動時に引数として渡す必要があるようです。

【例】
--------------------------------
apache2 -D MYVAR

<IfDefine MYVAR>
...
</IfDefine>
--------------------------------
http://stackoverflow.com/questions/1369023/apach …


ただ、
http://toripon.blogspot.jp/2012/01/htaccessifdef …
こちらのサイトでは、質問者様と同様の書き方で、
期待の動きができたという記事がございました。。
hetemlのサーバということなので、hetemlが特別な設定をしておられるのかもしれませんね。。

直感的には質問者様の記述方法で私もいけるかと思ったのですが、
複数のサーバで試してみても期待の動きを実現できませんでした。


リダイレクトのみに関して申し上げれば、
RewriteCondでは、SetEnvIfで設定した環境変数が使用できるので、

SetEnvIf Host "\.com" IS_CHK=1

RewriteEngine on
RewriteCond %{ENV:IS_CHK} 1
RewriteRule ^(.*)$ http://hoge.com/

というような形で、
mod_rewriteを利用すれば実現できそうです。

>尚、<IfDefine>~</IfDefine>内は、判りやすくリダイレクトにしましたが、ここはなんでもよいです。
ということだったのですが、
こちらの方法では自由な記述ができないですね。。

以上になります。
少しネガティブな回答になってしまっておりますが、
ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

blue-goheimochi様

お忙しい中、早速のご解答ありがとうございます。
参考になりました。

<IfDefine>~</IfDefine>内では、
モバイルキャリアの振り分けを行いたいと考えておりました。

お礼日時:2013/07/17 19:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!