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]

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

ads

シェアする

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

フォローする

ads

コメント

  1. […] 2. mod_rewriteのRewriteCondで、SetEnvIfの環境変数を利用する […]