mod_rewriteのRewriteCondで、SetEnvIfの環境変数を利用する

謎のタイトルになりましたが、、、 apacheのmod_rewriteでリライトするときに、SetEnvIfやSetEnvIfNoCaseで設定した環境変数を参照したい場合があります。 マニュアルにはあんまり丁寧に出てないんですが、Using Environment Variablesの最後にちゃーんと書いてありました。

%{ENV:variable}

これで環境変数を使えます。 mod_rewriteのほうには書いてないのがちょっと不親切ですね。。 ↓以下サンプルです。

プライベートIPアドレスからの接続の場合に特別なページを表示するサンプルです。 ・プライベートIPアドレスから/portal/への接続⇒/office/~のコンテンツを表示 ・それ以外から/portal/への接続⇒/public/~のコンテンツを表示

RewriteEngine On
SetEnvIf Remote_Addr ^192.168.    OFFICE=yes
SetEnvIf Remote_Addr ^172.1[6-9]. OFFICE=yes
SetEnvIf Remote_Addr ^172.2[0-9]. OFFICE=yes
SetEnvIf Remote_Addr ^172.3[0-1]. OFFICE=yes
SetEnvIf Remote_Addr ^10.         OFFICE=yes
RewriteCond %{ENV:OFFICE} yes
RewriteRule ^/portal/(.*)$ /office/$1 [L,QSA]
RewriteRule ^/portal/(.*)$ /poblic/$1 [L,QSA]

この例が意味があるかは・・・置いておいて。。。

このエントリーをはてなブックマークに追加

カテゴリー: apache, Linux   作成者: Toshiaki Baba パーマリンク
Amazonおまかせリンク(R)

コメントを残す

メールアドレスが公開されることはありません。


3 − = one

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">