2011-11-14 3 views
5

ENVがtrueまたは定義されている場合(定義されていない場合はfalseと仮定)、RewriteCondステートメントのセットを実行する必要があります。.htaccess ENVが真または定義されているかどうかをテストする

RewriteCond %{ENV:IS_MOBILE} ^true$ 
RewriteCond ... 

をして(これも有効であるかどうかわからない)

RewriteCond %{ENV:IS_MOBILE} !=true 
RewriteCond... 

しかし、どちらも動作するようです:私が使用しようとしてきました。私はこれを行うことができますどのような方法ですか?

答えて

10

はここで解決策を見つけるためにあなたを助けるべき現実のサンプルです:

ホストは、「S」または「静的」で始まる場合は、「STATIC」という環境変数を作成して、「1」に設定します:

RewriteCond %{HTTP_HOST} (s|static)\.mysite\.com$ 
RewriteRule (.*) - [QSA,E=STATIC:1] 

次に何を探して:

RewriteCond %{ENV:STATIC} 1 
RewriteRule (.*)\.(pdf|jpg|jpeg|gif|png|ico)$ - [L] 

を今、あなた場合:ファイルは、「静的」とみなされた場合、私のホストは、その後停止(IMGなど)、次に「静的」である場合それを確信したい変数が存在しない場合は、変数が空であるかどうかを確認してください。ここでは、直前後の私のルールがあります:変数が空でない場合、それはチェックし、もしそうなら、ありますエラー= 404(シミュレートするために、「見つからない」):お使いの場合には

RewriteCond %{ENV:STATIC} !^$ 
RewriteRule (.*) /404.php [L] 

あなたENVではない場合あなたはそれが本当だと仮定空:あなたのケースでは

RewriteCond %{ENV:IS_MOBILE} !^$ 
RewriteCond... 

あなたENVが等しい場合、は正確に文字列に等しい「trueは、」あなたはそれが「真」だとします

RewriteCond %{ENV:IS_MOBILE} true 
RewriteCond... 

これが役に立ちます。

+0

これは基本的に私の解決策を指摘しましたが、場合によっては、標準の環境変数を削除して仮想ホスト内にENVを定義する必要があることに注意してください。 – Ashley

+0

私はvhost環境でしか作業していないので、問題はありませんが、これに気づくのは正しいです。再度、感謝します。 –

関連する問題