このモジュールは、 リクエストの属性に基づいて環境変数を設定する機能を提供します。
ステータス: Base
ソースファイル:
mod_setenvif.c
モジュール識別子:
setenvif_module
互換性:
Apache 1.3 以降で使用可能。
mod_setenvif モジュールは、リクエストのある側面が指定された正規表現に合うかどうかによって環境変数を設定する機能を提供します。 これらの環境変数を使用して、サーバの他の部分がどのような動作をするかを 決定することができます。
このモジュールが提供するディレクティブは、
設定ファイルに現れる順番に適用されます。
それを使って、次の例のようにより複雑な設定をすることができます。
これは、ブラウザが mozilla ではあるけれど、MSIE ではないときに
netscape
を設定します。
BrowserMatch ^Mozilla netscape BrowserMatch MSIE !netscape
詳細は、Apache の環境変数を参照してください。
構文: BrowserMatch regex
env-variable[=value]
[env-variable[=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" に設定されます。 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
regex env-variable[=value]
[env-variable[=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 attribute
regex env-variable[=value]
[env-variable[=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
attribute regex env-variable[=value]
[env-variable[=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" に設定します。