[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

mod_setenvif モジュール

このモジュールは、リクエストの属性に基づいて環境変数を設定する機能を 提供します。

ステータス: Base
ソースファイル: mod_setenvif.c
モジュール識別子: setenvif_module
互換性: Apache 1.3 以降で使用可能。

概要

mod_setenvif モジュールは、リクエストのある側面が 指定された正規表現に合うか どうかによって環境変数を設定する機能を提供します。 これらの環境変数を使用して、サーバの他の部分がどのような動作をするかを決定する ことができます。

このモジュールが提供するディレクティブは、設定ファイルに現れる順番に適用されます。 それを使って、次の例のようにより複雑な設定をすることができます。これは、 ブラウザが mozilla ではあるけれど、MSIE ではないときに netscape を 設定します。

  BrowserMatch ^Mozilla netscape
  BrowserMatch MSIE !netscape
  

詳細は、Apache の環境変数を 参照してください。

ディレクティブ


BrowserMatch ディレクティブ

構文: BrowserMatch regex envar[=value] [envar[=value]] ...
デフォルト: None
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_setenvif
互換性: Apache 1.2 以上 (このディレクティブは Apache 1.2 では、今では obsolete になっている mod_browser モジュールに ありました)。.htaccess ファイルでの使用は 1.3.13 以降でのみサポート。

BrowserMatch ディレクティブは、HTTP リクエストの User-Agent ヘッダフィールドに基づいて環境変数を設定します。最初の引数は POSIX.2 拡張正規表現 (egrep 形式の正規表現と似たもの) です。 残りの引数は、設定をする変数名とその値で、後者は省略可能です。 これらは以下の形式になります。

  1. varname
  2. !varname
  3. varname=value

最初の形式では、値は "1" に設定されます。2 番目は変数が 既に定義されていた場合、それを削除します。3 番目は変数の値を value に設定します。User-Agent フィールドの文字列が複数のエントリにマッチした場合は、その結果が まとめられます。エントリは現れた順に処理され、後のエントリが前のものを 上書きします。

例:

    BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
    BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
    BrowserMatch MSIE !javascript
  

正規表現の文字列は大文字小文字を区別することに 注意してください。大文字小文字を区別しないマッチは BrowserMatchNoCase ディレクティブを参照してください。

BrowserMatch ディレクティブと BrowserMatchNoCase ディレクティブは SetEnvIf ディレクティブと SetEnvIfNoCase ディレクティブの特別なケースです。以下の 2 行は同じ効果になります:

   BrowserMatchNoCase Robot is_a_robot
   SetEnvIfNoCase User-Agent Robot is_a_robot
  

BrowserMatchNoCase ディレクティブ

構文: BrowserMatchNoCase regex envar[=value] [envar[=value]] ...
デフォルト: none
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_setenvif
互換性: Apache 1.2 以上 (このディレクティブは Apache 1.2 では、今では obsolete になっている mod_browser モジュールに ありました)。.htaccess ファイルでの使用は 1.3.13 以降でのみサポート。

BrowserMatchNoCase ディレクティブは、意味的には BrowserMatch ディレクティブとほとんど同じです。違う点は、大文字小文字を区別しないで マッチを行なうことです。例:

    BrowserMatchNoCase mac platform=macintosh
    BrowserMatchNoCase win platform=windows
  

BrowserMatch ディレクティブと BrowserMatchNoCase ディレクティブは SetEnvIf ディレクティブと SetEnvIfNoCase ディレクティブの特別なケースです。以下の 2 行は同じ効果になります:

   BrowserMatchNoCase Robot is_a_robot
   SetEnvIfNoCase User-Agent Robot is_a_robot
  

SetEnvIf ディレクティブ

構文: SetEnvIf attribute regex envar[=value] [envar[=value]] ...
デフォルト: none
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_setenvif
互換性: Apache 1.3 以上。Request_Protocol キーワードと 環境変数のマッチは 1.3.7 以降でのみ使用可能。.htaccess ファイルでの使用は 1.3.13 以降でのみサポート。

SetEnvIf ディレクティブは、リクエストの属性に基づいて 環境変数を定義します。これらの属性は、HTTP リクエストのいろいろなヘッダ フィールド (詳しい情報は RFC 2616 を参照 してください) か、以下のような、リクエストの他の側面であることができます。

よく使われるリクエストのヘッダフィールドには Host, User-Agent, Referer があります。

属性名 attribute が特別なキーワードやリクエストのヘッダフィールド名に マッチしないときは、リクエストに関連付けられたリストにある環境変数の 名前として試されます。これにより、SetEnvIf ディレクティブが 前のマッチの結果を使用することができるようになります。

前の SetEnvIf[NoCase] で定義された環境変数のみを この方法で調べることができます。「前」というのは (サーバ全体、のような) より広いスコープで定義されたか、現ディレクティブのスコープの中の前の方で 定義されたという意味です。

例:

   SetEnvIf Request_URI "\.gif$" object_is_image=gif
   SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
   SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
        :
   SetEnvIf Referer www\.mydomain\.com intra_site_referral
        :
   SetEnvIf object_is_image xbm XBIT_PROCESSING=1
  

先頭の三つはリクエストが画像ファイルのときに、環境変数 object_is_image を設定します。4 番目は参照元のページが www.mydomain.com ウェブサイトのどこかにある場合に intra_site_referral を設定します。


SetEnvIfNoCase ディレクティブ

構文: SetEnvIfNoCase attribute regex envar[=value] [envar[=value]] ...
デフォルト: none
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_setenvif
互換性: Apache 1.3 以上。Request_Protocol キーワードと 環境変数のマッチは 1.3.7 以降でのみ使用可能。.htaccess ファイルでの使用は 1.3.13 以降でのみサポート。

SetEnvIfNoCase は、意味的には SetEnvIf とほとんど同じです。違いは正規表現のマッチが大文字小文字を区別しないで 行なわれることです。例えば:

   SetEnvIfNoCase Host Apache\.Org site=apache
  

これは、HTTP リクエストの Host: ヘッダフィールドがあり、 その値が Apache.org, apache.org やその他の 大文字小文字の組み合わせであったときに、環境変数 site を "apache" に設定します。


Apache HTTP Server Version 1.3

Index Home