Oracle HTTP Server 管理者ガイド
10g(10.1.3.1.0) B31847-01 |
|
この章では、Oracle HTTP Serverに組み込まれているモジュール(mod)について説明します。モジュールはWebサーバーの基本機能を拡張し、Oracle HTTP Serverとその他のOracle Application Serverコンポーネントとの統合をサポートします。
該当する場合は、Apache Software Foundationのマニュアルを参照しています。
表7-1に、この章で説明するOracle HTTP Serverの全モジュールを示します。
Oracle HTTP Serverのモジュール |
|||
---|---|---|---|
ホスト名やIPアドレスなど、リクエストの特性に基づいてサーバーへのアクセスが制御されます。
ファイル・タイプやリクエスト方法に基づいてCGIスクリプトを実行できます。
リクエストの処理中にURLを操作できます。このモジュールには、URLとファイル・システムのパスとのマッピングおよびURLリダイレクション機能があります。
固有のHTTPヘッダーを含むファイルを送信できます。
ファイルベースのユーザー・リストによるユーザー認証ができます。
保護付き領域への匿名ユーザー・アクセスができます(電子メール・アドレスをロギングできる匿名FTPと同様です)。
DBMファイルを使用してユーザー認証を提供します。
ディレクトリ索引が自動的に生成されます。
CERN(Conseil Europeen pour le Recherche Nucleaire) HTTPDメタファイルのセマンティクスがエミュレートされます。メタファイルは、サーバーがアクセスするファイルごとに通常のセットに加えて生成できるHTTPヘッダーです。
Oracle HTTP Serverの前でSSL接続が終了するリバース・プロキシが、SSLクライアント証明書情報などのSSL接続に関する情報を、Oracle HTTP ServerおよびOracle HTTP Serverの背後で動作しているアプリケーションに送信できるようにします。この情報は、HTTPヘッダーを使用してリバース・プロキシからOracle HTTP Serverに送信されます。情報はヘッダーから標準CGI環境変数に送信されます。SSL接続がOracle HTTP Serverによって終了する場合はmod_ossl
またはmod_ssl
がこの環境変数を移入します。これはOracleモジュールです。
また、特定のリクエストがHTTP経由で受信される場合も、HTTPSリクエストとして扱うことができます。これは、SimulateHttps
ディレクティブを使用して実行されます。
SimulateHttps
は、それ自体が含まれるコンテナ(<VirtualHost>、<Location>など)を使用し、受信されたこのコンテナに対するすべてのリクエストを、リクエストの受信に使用された実際のプロトコルに関係なく、HTTPS経由で受信されたものとして扱います。
サーバーでCGIスクリプトを実行できます。
Define
ディレクティブが有効になります。このディレクティブは、どの構成行でも拡張できる変数を定義します。Define
ディレクティブには、デフォルトではサーバーにコンパイルされないことを意味するステータスExtension
があります。
このモジュールには拡張API(EAPI)が必要です。Oracle HTTP Serverは、常にEAPIに対応しています。
このモジュールは、UNIXシステムでのみ使用可能です。
mod_auth_digest
で使用されているものより古いバージョンのMD5 Digest認証仕様を使用して、ユーザー認証を提供します。mod_digest
は、旧バージョンのブラウザ以外では動作しない可能性があります。
サーバーでスラッシュ(/)のリダイレクトを実行できます。ディレクトリ指定には後続のスラッシュを含める必要があります。後続のスラッシュがないURLリクエストを受信すると、mod_dir
は後続のスラッシュが付いている同一のURLにリダイレクトします。次に例を示します。
http://myserver/documents/mydirectory
このURLは、次のURLにリダイレクトされます。
http://myserver/documents/mydirectory/
OracleのDynamic Monitoring Service(DMS)を使用してサイト・コンポーネントのパフォーマンスを監視できます。これはOracleモジュールです。
環境変数を渡し、設定および設定解除することで、CGIスクリプトとサーバー・サイド・インクルード(SSI: Server Side Includes)ページの環境を制御できます。
ModifyEnv
は、値を既存のENV
変数の値の前または後ろに追加し、Oracle HTTP Server環境に渡します。次に使用方法を示します。
$FOO
= "foo"
の場合:
ModifyEnv FOO "bar" modifies the value of $FOO from "foo" to "foo:bar" ModifyEnv FOO "+bar" modifies the value of $FOO from "foo" to "bar:foo"
$FOO
が定義されていない場合:
Modify Foo "bar" sets the value of $FOO to "bar"
Apache APIを使用したモジュールの作成方法を示す例と参考情報が提供されます。実装時に、サーバーによってトリガーされるモジュール・コールバックのデモンストレーションが実行されます。
サーバーでExpires HTTPヘッダーを生成できます。このヘッダーは、ドキュメントの妥当性に関する情報をクライアントに提供します。期限切れ条件に基づいて、キャッシュされたコピーが期限切れになると、ドキュメントが情報源より再取得されます。
FastCGIプロトコルをサポートします。このプロトコルにより、CGIアプリケーション用に実行中のサーバーのプールをメンテナンスできます。その結果、起動と初期化のオーバーヘッドがなくなります。
HTTPレスポンス・ヘッダーをマージ、置換または削除できます。
サーバー側のイメージ・マップ処理ができます。
SSI(サーバー・サイド・インクルード)ディレクティブ用のドキュメントを処理するフィルタを提供します。
すべてのインストール済モジュールとディレクティブの設定など、サーバー構成全体のサマリーが生成されます。
クライアントのユーザー・エージェントをロギングできます。現在、mod_log_agent
は使用されていません。かわりにmod_log_configを使用する必要があります。
サーバー・アクティビティの、構成およびカスタマイズ可能なロギング機能が提供されます。ログの書式を選択し、ロギング対象となる個々のリクエストをその特性に基づいて選択または除外できます。
サーバー上のドキュメントを参照するドキュメントのロギングが有効になります。現在、mod_log_referer
は使用されていません。かわりにmod_log_configを使用する必要があります。
サーバーでファイル名からファイル・タイプを判断し、処理用のハンドラに関連付けできます。
サーバーでは、ファイルの内容のうち数バイトを検査することでファイルのMIMEタイプを判断できます。mod_mimeでファイル・タイプを判断できない場合にこのモジュールを使用します。最初にmod_mime
によってファイルが処理されるように、mod_mime
が構成ファイル内でmod_mime_magic
より前にあることを確認してください。
ファイルのリストがメモリーにマップされます。これは、頻繁にリクエストされるがあまり変更されないファイルに役立ちます。
サーバーによるコンテンツのネゴシエーション(クライアントの機能に基づくドキュメントの選択)が有効になります。
AJP 1.3プロトコルを使用して、Oracle HTTP Server(OHS)からOracle Containers for J2EE(OC4J)にリクエストがルーティングされます。これはOracleモジュールです。mod_oc4j
は、デフォルトで有効になっています。
Oracle Application Server 10.1.3では、最小限の構成変更または構成変更なしで、OHSとOC4Jとの間のルーティング関係を作成または変更できるように、ルーティングIDおよびマウント・ポイントの検出が追加されています。
各OC4Jには、opmn.xmlからルーティングIDが割り当てられます。Oracle Process Management and Notification Server(OPMN)から各OC4Jに、それぞれのルーティングIDを含む通知が送信されます。ルーティングIDを受信すると、mod_OC4JはOC4JのルーティングIDをOHSのルーティングIDと比較し、OC4Jおよび合致するルーティングIDを、動的にルーティング表に追加します。
インストール後、OHSは、opmn.xml
のルーティングIDを使用するようにデフォルトで構成されます。デフォルトのルーティングIDはg_rt_id
です。OHSは、新しくインストールされたias-instance
のすべてのOC4Jにルーティングします。これは、すべてのOC4Jが同じデフォルトのルーティングIDを持つためです。クラスタに1つ以上のias-instance
が含まれている場合、OHSはデフォルトのルーティングIDを持つすべてのOC4Jにルーティングします。
Oracle HTTP ServerのルーティングIDは、次の構成ファイルのいずれかで構成できます。
opmn.xml
でルーティングIDを構成するには、Oracle HTTP Serverのias_component
セクションに次の内容を入力します。
<module_data> <category id="start-parameters"> <data id="routing-id" value="my_id"/> </category> </module-data>
mod_oc4j.conf
でルーティングIDを構成するには、Oc4jRoutingIDを参照してください。
ルーティング・モードを指定するには、Oc4jRoutingModeを参照してください。
関連資料
|
この項の内容は、次のとおりです。
この後の項では、httpd.conf
およびmod_oc4j.conf
内のすべての関連ディレクティブについて説明します。また、サンプル構成も示します。
mod_oc4j
のディレクティブは、mod_oc4j.conf
内に保持されます。mod_oc4j.conf
ファイルは、次のディレクティブを使用して、デフォルトでhttpd.conf
ファイルにインクルードされます。
include "ORACLE_HOME/Apache/Apache/conf/mod_oc4j.conf"
mod_oc4j
の構成には、次のディレクティブを使用します。
mod_oc4j
モジュールをロードします。
カテゴリ | 値 |
---|---|
構文 |
|
必須 |
あり |
デフォルト |
|
例 |
OC4J接続キャッシュのサイズを指定します。
使用されていない接続の最大アイドル時間(秒単位)を定義します。
カテゴリ | 値 |
---|---|
構文 |
|
必須 |
なし |
デフォルト |
なし |
例 |
|
使用方法 |
|
JSESSIONID_<
cookie_name_extension
>
をCookie内のOC4JのセッションIDとして使用するようにmod_oc4j
に対して指示します。
SSL環境変数の受渡しを制御します。
mod_oc4j
に対して、一部の環境変数をOracle HTTP ServerからOC4Jに渡すように指示します。
OC4Jにより、ONS通知でマウント・ポイントが通知されます。これにより、ルーティングするOC4Jのマウント・ポイントを、mod_OC4J
が動的に検出および更新できます。このため、静的マウント・ポイントの構成が必要なくなり、mod_OC4J
は、Oracle HTTP Serverを停止および再起動することなくマウント・ポイントの構成を更新できます。静的マウント・ポイントを使用する場合は、次の構成情報を使用できます。また、Oc4jRoutingModeをstaticに設定する必要があります。
mod_oc4j
に対して、特定のパスを含むリクエストを宛先にルーティングするように指示します。宛先には、単一のOC4JプロセスまたはOC4Jインスタンスのセットを指定できます。
ベース・サーバーからマウント・ポイントをコピーします。
Oracle HTTP Serverには、Oc4jRoutingID
を使用して、1つ以上のルーティングIDを割り当てることができます。Oc4jRoutingID
のルーティングIDのいずれかと一致するものが含まれたOC4Jからの通知を受信すると、mod_oc4jはルーティング表を更新し、OC4Jへのルーティングを開始します。
カテゴリ | 値 |
---|---|
構文 |
|
パラメータ・タイプ |
文字列 |
デフォルト |
なし |
使用可能な値 |
|
例 |
|
仮想サーバーが親のルーティングIDリストを仮想サーバーのリストで上書きするか結合するかを指定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
使用可能な値 |
|
デフォルト値 |
|
例 |
|
Oc4jRoutingModeは、使用するルーティング・モードのタイプを指定します。ルーティング・モードには次のものがあります。
カテゴリ | 値 |
---|---|
パラメータ名 |
Oc4jRoutingMode |
パラメータ・タイプ |
|
使用可能な値 |
|
デフォルト値 |
|
例 |
|
mod_oc4j.conf
でOc4jRoutingModeをStaticに設定する場合、次を追加する必要があります。
Oc4jMount /em/*home Oc4jMount /em home
このパラメータを追加しないと、Application Server Controlコンソールにアクセスできません。mod_oc4j.conf
での完全なエントリは次のようになります。
LoadModule oc4j_module libexec/mod_oc4j.so Oc4jRoutingMode Static <IfModule mod_oc4j.c> Oc4jMount /em/*home Oc4jMount /em home </IfModule>
OC4Jから範囲内のエラーが返されたときに、ユーザーがOracle HTTP Serverのエラー・ページを使用して、エラー範囲を構成することを許可します。
この項では、mod_oc4j
のサンプル構成について説明します。
この構成では、URI /servlet/で始まるすべてのリクエストが、OC4Jプロセスのデフォルト・インスタンスにマウントされます。
httpd.conf
ファイルに次のエントリを作成します。
Oc4jMount /servlet/*例7-2 mod_oc4jのサンプル構成
この構成では、Oc4jMount
ディレクティブのかわりに<Location
>コンテナ・ディレクティブを使用して、例7-1の構成と同じ動作を実行します。
httpd.conf
ファイルに次のエントリを作成します。
<Location /servlet> SetHandler oc4j-handler </Location>
この構成では、URI /servlet/
または/j2ee/
で始まるすべてのリクエスト、およびすべてのJSPページが、OC4JプロセスのデフォルトのOC4Jインスタンスにマウントされます。
mod_oc4j.conf
ファイルに次のエントリを作成します。
Oc4JMount /servlet/* Oc4JMount /*.jsp Oc4JMount /j2ee/*例7-4 mod_oc4jのサンプル構成
この構成では、次のようにマウントが行われます。
/applicationA/
で始まるすべてのリクエストおよびすべてのJSPページが、oc4j_instance_A
にマウントされます。このインスタンスでは、すべてのOC4JプロセスがOPMNによって管理されます。
/applicationB/
で始まるすべてのリクエストが、oc4j_instance_B
にマウントされます。このインスタンスでは、すべてのOC4JプロセスがOPMNによって管理されます。mod_oc4j.conf
ファイルに次のエントリを作成します。
Oc4JMount /applicationA/* oc4j_instance_A Oc4JMount /applicationB/* oc4j_instance_B Oc4JMount /j2ee/* Oc4JMount /*.jsp oc4j_instance_A
メトリックベースのロード・バランシングなど、mod_oc4j
ロード・バランシングについては、付録D「mod_oc4jを使用するロード・バランシング」で詳しく説明しています。
オプションで、mod_oc4j
とOC4J間の通信に直接SSLサポートを指定できます。このためには、mod_oc4j
側とOC4J側でSSLを有効にする必要があります。
mod_oc4j
に対してSSLを有効にするには、次のディレクティブをmod_oc4j.conf
に追加します。
mod_oc4j
がOC4Jプロセスとの通信時にSSLを使用する必要があるかどうかを示します。Oc4jiASPTActiveがOnに構成されている場合、このディレクティブはOnに構成しないでください。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
|
デフォルト値 |
|
Oc4jEnableSSLがOnに設定されている場合、このディレクティブはOC4JプロセスとのSSL通信に使用されるSSL証明書を含む、Oracle Walletファイルの位置を指定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
OC4JプロセスとのSSL接続確立時に使用されるSSL証明書を含むWalletディレクトリの場所へのパス。 |
デフォルト値 |
該当なし |
Oc4jEnableSSLがOnに設定されているとき、この値はWalletファイルを開く際の認証に使用される、クリアテキスト・パスワードです。この値は、iasobf
ユーティリティを使用して取得されます。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
Oc4jSSLWalletFileにより指定されたWalletファイルを開く際、認証に使用されるクリアテキスト・パスワード。 |
デフォルト値 |
該当なし |
mod_oc4j
とOC4Jの間でSSL通信を有効にするには、OC4J側でもSSLを有効にする必要があります。
一般的なApacheは、Oracle Application Server 10gリリース3(10.1.3)と統合できます。これにより、Oracle HTTP Serverおよびmod_oc4j
を使用するリクエストのルーティングと同じ方法で、一般的なApacheからOC4Jにリクエストをルーティングできます。サポートされている一般的なApacheは、バージョン1.3.xxおよびバージョン2.0です。
Oracle Notification Service(ONS)およびOracle Process Manager and Notification Server(OPMN)を使用した統合サポートを提供します。これはOracleモジュールです。
mod_onsint
は次の機能を提供します。
mod_onsint
は、Oracle HTTP Serverインスタンス内のすべてのモジュールに対する通知を受信するプロセスを1つ提供します。
PROC_READY
ONS通知を発行します。また、DMSメトリックなどの情報やリスナーへの接続方法に関する情報も提供します。これらの通知は、Oracle HTTP Serverインスタンスが実行されているかぎり、mod_onsint
により定期的に送信されます。
mod_onsint
は、親プロセスを監視します。親プロセスの異常終了を検出すると、残っている子プロセスをすべて中断します。この機能とOPMNが組み合されると、親プロセスが失敗したときでもOracle HTTP Serverを再起動できます。mod_onsint
は、Oracle HTTP Serverの子プロセスがすべて中断され、新しいOracle HTTP Serverインスタンス用にポートが開かれた状態になるようにします。OPMNは、元のインスタンスの障害が検出された後、新規インスタンスが起動されるように保証します。
UNIXとWindowsではOracle HTTP Serverのアーキテクチャに違いがあるため、これらのプラットフォームではmod_onsint
の実装に多少の違いがあります。
UNIXでは、mod_onsint
はモジュールの初期設定時にプロセスを作成します。このプロセスでは、親プロセスの監視とONSメッセージの送受信を行います。ONS通知に関心がある他のモジュールからのコールバック・ファンクションは、このプロセス内に作成されます。この情報を他のOracle HTTP Serverの子プロセスと共有するには、メモリー・マップ・ファイルなどのプロセス間通信を使用する必要があります。UNIX上で親プロセスの障害が検出されると、すべての子プロセスにシグナルが送信され、すべての子プロセスがシャットダウンします。
Windowsでは、Oracle HTTP Serverは親プロセス、および全HTTPリクエストを処理するマルチスレッドの子プロセスという2つのプロセスのみで構成されます。このモデルでは、mod_onsint
は子プロセス内のスレッドとして実行されます。このスレッドが、親プロセスの監視とONSメッセージの送受信を行います。ONS通知に関心がある他のモジュールからのコールバック・ファンクションは、この子プロセス内に作成されます。親プロセスの障害が検出された場合、mod_onsint
は子プロセスを終了し、Oracle HTTP Serverを事実上停止します。
mod_onsint
に対して構成できるOpmnHostPort
というオプションのディレクティブがあります。このディレクティブを使用すると、mod_onsint
が動作中のOracle HTTP Serverインスタンスをpingするため、OPMNが使用するホスト名とポートを指定できます。OpmnHostPort
が指定されていないと、mod_onsint
はHTTPポートを自動的に選択します。状況によっては、OPMNがリスナーのpingに使用するHTTPポートとホスト名に特定のものを選択する場合があります。
OpmnHostPort
は、次のような、OPMNに渡す値を指定する構文を取ります。
OpmnHostPort [<http> | <https>://]<host>:<port>
たとえば、次の行は、OPMNがこのリスナーをpingするために、HTTPを使用し、localhostインタフェースとポート7778を使用する必要があることを指定しています。
OpmnHostPort http://localhost:7778
このディレクティブは、httpd.conf
ファイルのグローバル・セクションに指定する必要があります。ロケーション・コンテナの仮想ホストに埋め込むことはできません。インストール後、OpmnHostPort
ディレクティブはdms.confに置かれます。このディレクティブは、特殊なローカルホスト専用仮想ホストである、Oracle HTTP Serverの診断ポートに対するOPMNを指します。Application Server ControlコンソールからのOPMNのpingやDMSのメトリック・リクエストなど、内部診断リクエストはログに記録されません。
このOracleモジュール(C言語で記述されたOCIアプリケーション)は、mod_dav
の実装の拡張版であり、Oracle HTTP Serverと統合されています。mod_oradav
では、ローカル・ファイルまたはOracle Databaseに対する読取りと書込みができます。Oracle Databaseには、mod_oradav
がWebDAVアクティビティをデータベース・アクティビティにマップするためにコールするOraDAVドライバ(ストアド・プロシージャ・パッケージ)が必要です。実際には、WebDAVクライアントはmod_oradav
によりOracle Databaseに接続し、内容の読取りと書込み、および各種スキーマ内のドキュメントの問合せとロックを実行できます。
Oracle HTTP Serverの標準ディレクティブを使用して、Oracle Databaseを使用するようにmod_oradav
を構成できます。mod_oradav
では、コンテンツ管理タスクを実行するために、他のモジュール・コード(mime_magic
など)をすぐに活用できます。ほとんどのOraDAV処理アクティビティでは、コンテンツ・プロバイダとの間でコンテンツをストリーム化する必要があり、mod_oradav
ではOracle HTTP Server内でOCIストリーム・ロジックが直接使用されます。
mod_oradav
を構成するには、httpd.conf
にある<Location>
コンテナ・ディレクティブにパラメータを入力します。<Location>
コンテナ・ディレクティブは、DAV対応のURLを指定します。DAV
キーワードの後に、値On
を指定します。この値は、mod_dav
に対してコンテンツにローカル・ファイル・システムを使用するように指示します。
次の例では、Webサーバーのドキュメント・ディレクトリ(デフォルトではhtdocs
)のサブディレクトリmyfiles
と階層内のmyfiles
のすべてのサブディレクトリを、DAVが使用可能なディレクトリとして指定します。(myfiles
またはそのサブディレクトリには、シンボリック・リンクを定義しないように注意してください。)
<Location /myfiles> DAV On </Location>
mod_oradav
を使用してデータベース・スキーマにアクセスし、サード・パーティ・ツール(Adobe GoLiveやMacromedia Dreamweaverなど)とOracle interMediaからのアクセスを可能にする方法は、次のOTNで入手可能なOraDAV情報を参照してください。
http://www.oracle.com/technology/index.html
Oracle HTTP Serverに対して厳密な暗号化を有効にします。このOracleモジュールは、サーバーがSSLを使用できるようにするOracle HTTP Serverへのプラグインです。これは、OpenSSLモジュールのmod_ssl
と非常によく似ています。ただし、OpenSSLモジュールとは対照的に、mod_ossl
はSSLをサポートするOracleのSSL実装のバージョン3を基盤とし、同時にCerticomおよびRSAセキュリティ・テクノロジに基づいています。
関連資料
|
Oracle HTTP Serverでシングル・サインオンが有効になります。Oracleモジュールのmod_osso
では、受信リクエストを検査して、リクエストされたリソースが保護されているかどうかを判断し、保護されている場合はユーザー用のOracle HTTP Server Cookieを取得します。
Oracle HTTP ServerにPerlインタプリタが埋め込まれます。これにより、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。Oracle Application Serverでは、Perlバージョン5.6.1を使用します。
この項では、データベースを使用するmod_perl
ユーザー向けに、ローカル・データベース接続をテストし、文字構成を設定する方法について説明します。
次の項では、Perlを使用したデータベース・アクセスについて説明します。Perlスクリプトは、Oracle用のDBI/DBDドライバを使用してデータベースにアクセスします。DBI/DBDドライバはOracle Application Serverに含まれています。このドライバは、Oracle Call Interface(OCI)をコールしてデータベースにアクセスします。
DBIが機能するには、httpd.conf
でDBIが有効である必要があります。これには次の手順を実行します。
httpd.conf
を編集します。
PerlModule Apache::DBI
を検索します。
PerlModule Apache::DBI
という行のコメントを解除します。
ORACLE_HOME/opmn/bin> opmnctl [verbose] restartproc ias-component=HTTP_Server
ファイルがORACLE_HOME
/Apache/Apache/cgi-bin
にコピーされます。
#!<ORACLE_HOME>/perl/bin/perl -w use DBI; my $dataSource = "host=<hostname.domain>;sid=<orclsid>;port=1521"; my $userName = "scott"; my $password = "tiger"; my $dbhandle = DBI->connect("dbi:Oracle:$dataSource", $userName, $password) or die "Can't connect to the Oracle Database: $DBI::errstr\n"; print "Content-type: text/plain\n\n"; print "Database connection successful.\n"; ### Now disconnect from the database $dbhandle->disconnect or warn "Database disconnect failed; $DBI::errstr\n"; exit;
DBIスクリプトには次の場所からアクセスできます。
http://<hostname.domain>:<port>/cgi-bin/<scriptname> http://<hostname.domain>:<port>/perl/<scriptname>
スクリプトにuse DBI
ではなくuse Apache::DBI
と指定されている場合、このスクリプトを実行できるのは、http://<
hostname.domain>:<
port>/perl/<
scriptname>からのみです。
ローカル・シード・データベースのデータベース接続をテストするPerlスクリプトの例を次に示します。このスクリプトを使用して別のデータベース接続をテストするには、scott/tiger
をターゲット・データベースのユーザー名とパスワードに置き換える必要があります。
##### Perl script start ###### use DBI; print "Content-type: text/plain\n\n"; $dbh = DBI->connect("dbi:Oracle:", "scott/tiger", "") || die $DBI::errstr;
$stmt = $dbh->prepare("select * from emp order by empno")|| die $DBI::errstr; $rc = $stmt->execute() || die $DBI::errstr; while (($empno, $name) = $stmt->fetchrow()) { print "$empno $name\n"; } warn $DBI::errstr if $DBI::err; die "fetch error: " . $DBI::errstr if $DBI::err; $stmt->finish() || die "can't close cursor"; $dbh->disconnect() || die "cant't log off Oracle"; ##### Perl script End ######
SQL
NCHAR
データ型は、Oracle9i以降さらに改良され、信頼性の高いUnicodeデータ型と呼ばれています。NCHAR
、NVARCHAR2
およびNCLOB
などのSQL
NCHAR
データ型を使用すると、あらゆるUnicode文字をデータベースのキャラクタ・セットに関係なく格納できます。これらのデータ型のキャラクタ・セットは、各国語キャラクタ・セット、つまりAL16UTF-16またはUTF8で指定します。
このリリースのDBD::Oracle
はSQL
NCHAR
データ型をサポートしており、データ・バインド用の文字構成を指定できるようにドライバ拡張機能が用意されています。次のスクリプトに、SQL
NCHAR
データへのアクセス例を示します。
# declare to use the constants for character forms use DBD::Oracle qw(:ora_forms); # connect to the database and get the database handle $dbh = DBI->connect( ... ); # prepare the statement and get the statement handle $sth = $dbh->prepare( 'SELECT * FROM TABLE_N WHERE NCOL1 = :nchar1' ); # bind the parameter of a NCHAR type $sth->bind_param( ':nchar1', $param_1 ); # set the character form to NCHAR $sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' ); $sth->execute;
例7-7に示すように、set_formファンクションはプライベート・ファンクションとして提供されており、標準のDBI func()
メソッドで起動できます。このファンクションは、どのプレースホルダをどの文字構成に関連付けるかを指定する匿名ハッシュを取ります。文字構成の有効値は、ORA_IMPLICIT
またはORA_NCHAR
のいずれかです。文字構成をORA_IMPLICIT
に設定すると、アプリケーションのバインド・データはデータベースのキャラクタ・セットに変換され、ORA_NCHAR
に設定すると各国語キャラクタ・セットに変換されます。デフォルト構成はORA_IMPLICIT
です。
デフォルトのキャラクタ・セット構成を指定できるように、次のようにもう1つのファンクションも用意されています。
# specify the default form to be NCHAR $dbh->func( ORA_NCHAR, 'set_default_form' );
このコールの後は、set_form
のコールで特に指定しないかぎり、すべてのパラメータの構成がORA_NCHAR
になります。set_form
ファンクションとは異なり、これはデータベース・ハンドルのファンクションであるため、指定したデフォルト構成のデータベース・ハンドルの各文は、デフォルトで選択した構成であることに注意してください。
このファンクションでは、パラメータの文字構成を設定します。有効な構成は、ORA_IMPLICIT
(デフォルト)またはORA_NCHAR
です。この定数は、DBD::Oracle
ではora_forms
として使用できます。
# a declaration example for the constants ORA_IMPLICIT and ORA_NCHAR use DBD::Oracle qw(:ora_forms); # set the character form for the placeholder :nchar1 to NCHAR $sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' ); # set the character form using the positional index $sth->func( { 2 => ORA_NCHAR } , 'set_form' ); # set the character form for multiple placeholders at once $sth->func( { 1 => ORA_NCHAR, 2 => ORA_NCHAR } , 'set_form' );
このファンクションでは、データベース・ハンドルのデフォルトの文字構成を設定します。
$dbh->func( ORA_NCHAR , 'set_default_form' );
PHP(PHP: Hypertext Preprocessorの略)は、オープン・ソースで広く使用されている汎用クライアント側スクリプト言語で、標準HTMLに埋め込まれます。この言語は、動的HTMLページの生成に使用されます。Oracle HTTP Serverでは、mod_php
を介してPHPサポートが提供されます。また、Oracle Databaseサポートも有効になっています。使用されるPHPはバージョン4.3.9です。
Oracle HTTP ServerはOracle Databaseに接続され、Oracleストアド・プロシージャを使用してWebアプリケーションを作成できるようになります。これはOracleモジュールです。
Web対応のPL/SQLアプリケーションにアクセスするには、mod_plsql
用PL/SQLデータベース・アクセス記述子(DAD)を構成します。DADは、mod_plsql
がデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。DADには、接続詳細の他、データベースでの各種操作およびmod_plsql
全般にとって重要な構成パラメータが含まれています。PL/SQL Web Toolkitを使用するWeb対応のPL/SQLアプリケーションでは、そのアプリケーションを起動するDADを作成する必要があります。
DADを作成するには、次の手順を実行します。
ORACLE_HOME
/Apache/modplsql/conf/dads.conf
を編集します。
Location
に適用されるディレクティブのグループを囲みます。たとえば、<Location /myapp
>ディレクティブは、http://host:port/myapp/
のようなURLを介してPL/SQL Webアプリケーションを起動するために使用する、/myapp
という仮想パスを定義します。
Location
で定義された仮想パスに対するリクエストをmod_plsql
が処理できるように指示するOracle HTTP ServerのSetHandler
ディレクティブ。
SetHandler pls_handler
Location
>ディレクティブのコンテキストで許可されるその他のOracle HTTP Serverのディレクティブ。通常は、次のディレクティブが使用されます。
Order deny,allow Allow from all AllowOverride None
mod_plsql
固有のディレクティブ。次に例を示します。
PlsqlDatabaseUsername scott PlsqlDatabasePassword tiger PlsqlDatabaseConnectString orcl PlsqlAuthenticationMode Basic
Location
のディレクティブのグループをクローズして、1つのDADを定義するOracle HTTP Serverの</Location>
ディレクティブ。
ORACLE_HOME
/Apache/modplsql/conf
にあるdadTool.pl
スクリプトを実行することで、DADパスワードを不明瞭化します。
ORACLE_HOME/opmn/bin> opmnctl [verbose] restartproc ias-component=HTTP_Server
dads.conf
に一意の名前を持つ他のLocations
を定義することで、追加のDADを作成することもできます。
mod_plsql
の構成パラメータは、次の3つの構成ファイル内に含まれます。
このファイルには、mod_plsql
をOracle HTTP ServerにロードするLoadModule
ディレクティブ、mod_plsql
のグローバル設定およびdads.conf
とcache.conf
のインクルード・ディレクティブが含まれています。このファイルは、Oracle HTTP Server構成ファイルによりインクルードされます。ファイル名は、UNIXの場合はORACLE_HOME
/Apache/Apache/conf/oracle_apache.conf
、Windowsの場合はORACLE_HOME
¥Apache¥Apache¥conf¥oracle_apache.conf
です。この構成ファイル自体がOracle HTTP Serverプライマリ構成ファイルhttpd.conf
にインクルードされます。
このファイルには、PL/SQLのデータベース・アクセス記述子(DAD)の構成パラメータが含まれています。DADは、mod_plsql
がデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。
このファイルには、mod_plsql
に実装されたファイル・システム・キャッシュ機能の構成の設定が含まれています。この構成ファイルが関係するのは、PL/SQLアプリケーションがOWA_CACHE
パッケージを使用して、ファイル・システム内の動的生成コンテンツをキャッシュする場合のみです。
表7-2にmod_plsql
の構成パラメータの一覧を示します。各パラメータは後半の項で詳しく説明します。
構成パラメータに値を指定するときは、Oracle HTTP Serverの値を指定する規則に従ってください。たとえば、値の中にスペースが含まれている場合は、値を二重引用符で囲む必要があります。たとえば、PlsqlNLSLanguage "TRADITIONAL CHINESE_TAIWAN.UTF8"
のようになります。
複数行ディレクティブにより、同じディレクティブをDAD内に複数回指定できます。
構成ファイル | パラメータ |
---|---|
このファイルには、mod_plsql
をOracle HTTP ServerにロードするLoadModule
ディレクティブ、mod_plsql
のグローバル設定およびdads.conf
とcache.conf
のインクルード・ディレクティブが含まれています。
次の項では、plsql.conf
に指定できるパラメータについて説明します。
mod_plsql
のDynamic Monitoring Service(DMS)を有効にします。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
On |
例 |
|
mod_plsql
のデバッグ・レベル・ログを有効にします。
デバッグ・レベル・ログは、デバッグ専用に使用されます。ロギングが有効化な場合、ログ・ファイルは次の場所に生成されます。
ログ・ファイルの場所は、PlsqlLogDirectoryで指定されています。このパラメータは、オラクル社カスタマ・サポート・センターよりmod_plsql
問題のデバッグ指示がないかぎり、Offに設定しておきます。
mod_plsql
の内部処理の詳細を表示する場合は、このディレクティブをOnに設定します。Onに設定すると、mod_plsql
は処理されるすべてのリクエストに対してログを開始します。ログ・ファイルは、PlsqlLogDirectoryディレクティブで指定された場所に生成されます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
Off |
例 |
PlsqlLogEnable |
デバッグ・レベル・ログが書き出されるディレクトリを指定します。
ロギングが有効なときにログ・ファイルが生成される場所のディレクトリ名を設定します。このディレクトリの場所について混乱が生じないように、絶対パスの使用をお薦めします。
UNIXでは、httpd子プロセスの所有者がこのディレクトリに対する書込み権限を持っている必要があります。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
アイドル・データベース・セッションがmod_plsql
によりクローズされてクリーン・アップされるまでの時間(分数)を指定します。
このディレクティブは、mod_plsql
内でデータベース接続とセッションの接続プーリングとともに使用されます。セッションがある一定の期間使用されないと、そのセッションはクローズされて解放されます。これは、使用されていないセッションをクリーン・アップし、データベース側でメモリーが解放されるようにするためです。
この時間を小さい値に設定すると、使用されていないデータベース・セッションのクリーン・アップが高速になります。ただし、極端に小さい値に設定すると、mod_plsql
内の接続プーリングが提供するパフォーマンスに悪影響を及ぼすことがあります。
オープンされているデータベース・セッションの数が重要でない場合は、最大のパフォーマンスが得られるように、このパラメータの値を大きくすることができます。その場合、アクセス頻度が高く、セッション・クリーン・アップ間隔に達することがないサイトについては、プーリングされたデータベース・セッションが確実に定期的にリサイクルされるように、DAD構成パラメータPlsqlMaxRequestsPerSessionを調整できます。
ほとんどのインストールでは、デフォルトのパラメータ値で十分です。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
15(分) |
例 |
|
このファイルには、PL/SQLのデータベース・アクセス記述子(Database Access Descriptor: DAD)の構成パラメータが含まれています。
この項では、dads.conf
ファイルに指定できるすべてのDADのレベル・パラメータについて説明します。これらのディレクティブ以外に、<Location
>ディレクティブのコンテキストで指定できる、次のようなOracle HTTP Serverのその他のディレクティブを指定することもできます。
Order deny,allow AllowOverride None
この後の項では、次のパラメータについて説明します。
リクエストされたプロシージャのコール後に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされた後にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行後に特定のコールを確実に行う必要がある場合にも役立ちます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
after_proc
と呼ばれていました。
mod_plsql
でプロシージャを実行前に記述する必要があるかどうかを指定します。このディレクティブをOnに設定すると、mod_plsql
ではプロシージャを起動する前に常に記述します。それ以外の場合は、mod_plsql
が内部的な経験則によりパラメータ・タイプを不正に解析した場合にのみ、プロシージャを記述します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
Off |
例 |
|
このDAD経由でアクセスできるように、使用する認証モードを指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
Basic |
例 |
|
GlobalOwa
、CustomOwa
、PerPackageOwa
)を使用するPL/SQLアプリケーションは、ごく少数です。SingleSignOn
モードがサポートされるのは、Oracle Application Serverのリリースのみで、Oracle Application Server PortalおよびOracle Application Server Single Sign-Onで使用されます。
Basic
認証を使用しない場合は、DAD構成に有効なユーザー名とパスワードを含める必要があります。Basic
モードで動的認証を実行する場合は、DADのusernameおよびpasswordパラメータを省略できます。
enablesso
とcustom_auth
の組合せから導出されていました。
enablesso = Yes
は、PlsqlAuthenticationMode SingleSignOn
に変換されます。
custom_auth = Global
は、PlsqlAuthenticationMode GlobalOwa
に変換されます。
custom_auth = Custom
は、PlsqlAuthenticationMode CustomOwa
に変換されます。
custom_auth = PerPackage
は、PlsqlAuthenticationMode PerPackageOwa
に変換されます。
他の組合せはすべてBasic
に変換されます。
リクエストされたプロシージャのコール前に起動するプロシージャを指定します。これにより、リクエストされたプロシージャがコールされる前にフック・ポイントを置くことができます。これは、リクエストされたプロシージャ内の問題のデバッグ中に、SQLトレース/SQLプロファイルを実行する場合に役立ちます。また、各プロシージャの実行前に特定のコールを確実に行う必要がある場合にも役立ちます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
before_proc
と呼ばれていました。
コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsql
では文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド長を最も近いレベルにバケット化して、このような影響を軽減します。
すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
4,20,100,400 |
例 |
|
bind_bucket_lengths
と呼ばれていました。
コレクション・バインド内の要素数のバインド中に使用する丸めサイズを指定します。PL/SQL文の実行中は、Oracle Databaseにより共有SQL領域内でPL/SQL文のキャッシュがメンテナンスされ、同じ文が再び実行される場合はキャッシュされた文が再利用されます。Oracleの一致条件では、文のテキストが同一で、バインド変数のデータ型が一致する必要があります。文字列の型が一致するには正確なバイト・サイズを指定する必要があり、コレクション・バインドの場合もコレクション内の要素数が重要になります。mod_plsql
では文が動的にバインドされるため、共有キャッシュのヒット率は低く、ほぼ重複する値で満杯になって、共有領域でラッチの競合が発生する傾向があります。このパラメータでは、バインド幅を最も近いレベルにバケット化して、このような影響を軽減します。
すべての数値は昇順で指定する必要があります。最後に指定したサイズに続くバケット・サイズは、最後のサイズの2倍とみなされます。
最後のバケット幅は4000以下にする必要があります。これは、配列のバインド幅を4000以下にするというOCIの制限によるものです。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
bind_bucket_widths
と呼ばれていました。
PL/SQLプロシージャに渡される環境変数のデフォルト・セットに、CGI環境変数のオーバーライドまたは追加(あるいはその両方)を実行するように指定します。これは、追加、オーバーライドまたは削除する名前/値ペアの複数行からなるディレクティブです。1つのディレクティブに指定できる環境変数は1つのみです。
変数名を指定して、Oracle HTTP Server環境からCGI環境変数を追加できます。CGI環境変数を削除するには、何も設定しません。固有の名前/値ペアを追加するには、構文myname=myvalue
を使用します。
owa_util.get_cgi_env
を介してPL/SQLアプリケーションで使用できます。
cgi_env_list
と呼ばれていました。
mod_plsql
を実行するための互換モードを指定します。このパラメータがサポートされるのは、Oracle Application Serverのリリースのみで、古いバージョンのOracle Application Server Portalでmod_plsql
を使用している場合のみ使用します。リリース9.0.2より前のOracle Application Server Portalに対してmod_plsql
を実行する場合は、この値を1に設定する必要があります。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
0 |
例 |
|
このパラメータにより、ドキュメントのダウンロード時にmod_plsql
でプラス記号(+
)が不正にスペース文字に変換されるという、旧バージョンでの不具合が有効になります。このフラグの最初のビットを有効にすると、名前にプラス記号(+
)を含むドキュメントをダウンロードできなくなります。
mod_plsql
にプーリングされた接続のテストに対するタイムアウトをミリ秒単位で指定します。
PlsqlConnectionValidationがAutomaticまたはAlwaysValidatに設定されていると、mod_plsql
はプーリングされたデータベース接続をテストしようとします。このパラメータは、mod_plsql
が接続は使用できないと判断する前に、テスト・リクエストの完了を待機する最大時間を指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
10000 |
例 |
|
mod_plsql
が接続プールで終了済接続を検出するために使用するメカニズムを指定します。
パフォーマンス上の理由で、mod_plsql
はデータベース接続をプーリングします。データベース・インスタンスが停止し、mod_plsql
がそのインスタンスに対する接続プールを保持していた場合、プーリングされた各データベース接続は、次回リクエストの処理に使用される際にエラーとなります。これは、あるノードが停止しても、他のデータベース処理を実行しているノードではリクエストを正常に処理できる、RACなどの高可用性の構成で問題となります。mod_plsql
では、データベース・ノードの停止による障害を検出した後に自己修正するためのメカニズムを提供しています。この自己修正メカニズムは、PlsqlConnectionValidation
パラメータによって制御されます。
次に、PlsqlConnectionValidation
の有効な値を示します。
mod_plsql
は、障害(インスタンスの障害)の検出前に作成され、プーリングされたすべてのデータベース接続をテストします。
mod_plsql
は、障害(インスタンスの障害)の検出前に作成され、プーリングされたすべてのデータベース接続を放棄します。
mod_plsql
は、リクエストの発行前に作成され、プーリングされたすべてのデータベース接続を常にテストします。このオプションは、各リクエストのパフォーマンス・オーバーヘッドと関連しているため、注意して使用する必要があります。
mod_plsql
は、プーリングされたデータベース接続を一切pingしません。このオプションは、常にmod_plsql
の古い動作のためのものです。カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
mod_plsql
では、次のいずれかのエラーが発生すると、データベースは停止していると判断します。
00443, 00000, "background process did not start"
00444, 00000, "background process failed while starting"
00445, 00000, "background process did not start after x seconds"
00447, 00000, "fatal error in background processes"
00448, 00000, "normal completion of background process"
00449, 00000, "background process unexpectedly terminated with error"
00470, 00000, "LGWR process terminated with error"
00471, 00000, "DBWR process terminated with error"
00472, 00000, "PMON process terminated with error"
00473, 00000, "ARCH process terminated with error"
00474, 00000, "SMON process terminated with error"
00475, 00000, "TRWR process terminated with error"
00476, 00000, "RECO process terminated with error"
00480, 00000, "LCK* process terminated with error"
00481, 00000, "LMON process terminated with error"
00482, 00000, "LMD* process terminated with error"
00484, 00000, "LMS* process terminated with error"
00485, 00000, "DIAG process terminated with error"
01014, 00000, "ORACLE shutdown in progress"
01033, 00000, "ORACLE initialization or shutdown in progress"
01034, 00000, "ORACLE not available"
01041, 00000, "internal error. hostdef extension doesn't exist"
01077, 00000, "background process initialization failure"
01089, 00000, "immediate shutdown in progress- no operations permitted"
01090, 00000, "shutdown in progress- connection is not permitted"
01091, 00000, "failure during startup force"
01092, 00000, "ORACLE instance terminated. Disconnection forced"
03106, 00000, "fatal two-task communication protocol error"
03113, 00000, "end-of-file on communication channel"
03114, 00000, "not connected to ORACLE"
12570, 00000, "TNS: packet writer failure"
12571, 00000, "TNS: packet writer failure"
Oracle Databaseへの接続を指定します。
TWO_TASK
が設定されている場合は、このパラメータを指定する必要はありません。
mod_plsql
の観点からは、TNSFormat
とNetServiceNameFormat
は類似しており、Netにより解決される接続記述子を意味します。TNSFormat
が便宜上提供されているため、エンド・ユーザーはこれを使用して、名前解決がローカルのtnsnames.ora
を介して行われることを示します。sqlnet.ora
に構成されているLDAP参照を使用して解決が行われる場合は、NetServiceNameFormat
フォーマット指定子の使用をお薦めします。高可用性をサポートするデータベース(たとえば、RACデータベースなど)の場合は、ネット・サービス名の解決がLDAPを使用して行われるように、NetServiceNameFormat
の使用をお薦めします。これにより、新規ノードまたは削除されたノードの情報を使用してOracle Internet Directoryを変更するのみで、mod_plsql
経由でアクセス可能なRACノードを追加または削除できます。その場合は、データベース・リスナーのHOST:PORT
情報をdads.conf
またはローカルtnsnames.ora
にハードコードしないことをお薦めします。
connect_string
と呼ばれていました。
データベースへのログインに使用するパスワードを指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
PlsqlDatabasePassword |
DADパスワードを手動で構成変更した後に、ORACLE_HOME
/Apache/modplsql/conf
にあるdadTool.pl
スクリプトを実行して、DADパスワードを不明瞭化することをお薦めします。
DADパスワードを不明瞭化する手順は、次のとおりです。
oracle
)に切り替えます。
$su - oracle
ORACLE_HOME
環境変数を設定して、Perl実行可能ファイルおよびdadTool.pl
スクリプトの場所を含むディレクトリを含むようにPATH
環境変数を設定します。 Bourne、BashまたはKornシェルの場合:
ORACLE_HOME=new_ORACLE_HOME_path;export ORACLE_HOME PATH=ORACLE_HOME/Apache/modplsql/conf:ORACLE_HOME/perl/bin:PATH;export PATH
Cまたはtcshシェルの場合:
setenv ORACLE_HOME new_ORACLE_HOME_PATH setenv PATH ORACLE_HOME/Apache/modplsql/conf:ORACLE_HOME/perl/bin:PATH
Windowsの場合:
set PATH=ORACLE_HOME¥Apache¥modplsql¥conf;ORACLE_HOME¥perl¥5.6.1¥bin¥MSWin32-x86;%PATH%
ORACLE_HOME
/lib
ディレクトリを含めます。表7-3に、各プラットフォームに適した環境変数を示します。
表7-3 プラットフォームのタイプと対応する共有ライブラリ・パスの環境変数
プラットフォーム | 環境変数 | 含めるディレクトリ |
---|---|---|
AIX |
|
|
HP-UX |
|
|
Solaris |
|
|
その他のUNIX(Linux、Tru64 UNIXなど) |
|
|
たとえば、HP-UXシステムのBourneシェルでSHLIB_PATH
環境を設定するには、次のコマンドを入力します。
$SHLIB_PATH=$ORACLE_HOME/lib:$SHLIB_PATH;export SHLIB_PATH
PATH
に$
ORACLE_HOME
¥bin
を含めます。
set PATH=%ORACLE_HOME%¥bin;%PATH%
mod_plsql
構成ディレクトリに変更します。
cd $ORACLE_HOME/Apache/modplsql/conf
perl dadTool.pl -o
注意:
PlsqlAuthenticationMode
をBasic
に設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。
Single Sign-On
認証を使用するDADの場合、このパラメータはスキーマの所有者名です。
password
と呼ばれていました。
データベースへのログオンに使用するユーザー名を指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
PlsqlAuthenticationMode
をBasic
に設定して動的認証を使用するDADの場合を除き、これは必須パラメータです。
Single Sign-On
認証を使用するDADの場合、このパラメータはスキーマの所有者名です。
username
と呼ばれていました。
URLに何も指定されていない場合にコールするデフォルトのプロシージャを指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
default_page
と呼ばれていました。
これは、ドキュメント表からのドキュメントのダウンロードを開始する、URL内の仮想パスです。たとえば、このパラメータをdocs
に設定すると、次のURLによってこの形式のURLでドキュメントのダウンロード・プロセスが開始されます。
/pls/dad/docs /pls/plsqlapp/docs
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
ドキュメントのダウンロード開始時にコールするプロシージャを指定します。このプロシージャは、ダウンロード処理用にコールされます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
すべてのドキュメントのアップロード先となるデータベース内の表を指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
document_table
と呼ばれていました。
mod_plsql
エラーのエラー・レポート・モードを指定します。このパラメータには、次の値を指定できます。
mod_plsql
は発生したHTTPエラーをOracle HTTP Serverに示します。その後、Oracle HTTP Serverでエラー・ページが生成されます。これをOracle HTTP ServerのErrorDocument
ディレクティブとともに使用すると、カスタマイズされたエラー・メッセージを生成できます。
mod_plsql
でエラー・ページが生成されます。通常、これは、発生したPL/SQLエラーと、PL/SQL例外スタック(存在する場合)を示す短いメッセージです。次に例を示します。
scott.foo PROCEDURE NOT FOUND
ModplsqlStyle
を指定した場合よりも詳細な情報が得られます。mod_plsql
によってURLの詳細とパラメータが提供され、サーバー構成情報も生成されます。このモードはデバッグ専用です。内部サーバー変数を表示するとセキュリティ上のリスクを伴うため、本番システムではこのモードを使用しないでください。 カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
古いバージョンの製品では、このパラメータはerror_style
と呼ばれていました。
ブラウザから直接実行することが禁じられているプロシージャ、パッケージまたはスキーマ名のパターンを指定します。これは複数行からなるディレクティブで、各パターンを1行に指定します。パターンには大文字と小文字の区別がなく、*などのワイルドカードを使用できます。ダイレクトURLアクセスで却下されるデフォルトのパターンは、sys.*
、dbms_*
、utl_*
、owa_util*
、owa.*
、htp.*
、htf.*
、wpg_docload.*
です。
このディレクティブを"#NONE#
"に設定すると、すべての保護が無効になります。稼働中のサイトにはこの設定はしないでください(デバッグに使用する場合があります)。
このパラメータが上書きされても、デフォルトは有効です。つまり、除外されるパターンのリストにデフォルト・リストを明示的に追加する必要はありません。
mod_plsql
では、このパラメータで指定したパターンのみでなく、特殊文字(タブ、改行、復帰、一重引用符、逆スラッシュ、改ページ、左カッコ、右カッコおよびスペース)を含むプロシージャ名も使用できません。これは変更できません。
exclusion_list
と呼ばれていました。owa_util.get_page
またはowa_util.get_page_raw
を使用して、データベースからフェッチする内容のトリップごとの行数を指定します。
デフォルトで、mod_plsql
は各行が255バイトのレスポンス出力行を200行フェッチします。レスポンス・バイトがシングルバイトの場合、レスポンス・バッファは最大限まで移入され、1回のラウンドトリップに255×200=51000バイトをパックできます。ただし、マルチバイト・データを含むレスポンスの場合は、各行のバイトのパックが理想的にならない場合があり、ラウンドトリップごとに送信されるバイト数が少なくなります。アプリケーションで大きなページを頻繁に生成し、レスポンスが1回のラウンドトリップに収められない場合は、このパラメータを高めに設定することを考慮してください。ただし、mod_plsql
によるメモリー使用量は増加します。
カテゴリ | 値 |
---|---|
構文 |
PlsqlFetchBufferSize |
デフォルト |
200 |
例 |
|
response_array_size
と呼ばれていました。
mod_plsql
が追加のパフォーマンス・ロギングを行うために使用するモードを指定します。
モードは次のとおりです。
InfoDebug: より多くの情報がApacheのerror_log
に記録されます。これは、Apacheのinfoロギング・レベルとともに使用されます。Apacheのロギング・レベルがこのレベル以上に設定されていない場合は、この設定が無視されます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
指定なし |
例 |
|
このロギング設定は、PL/SQLアプリケーションでの問題のデバッグに役立ちます。
プーリングされたデータベース接続がクローズされて再オープンされる前に処理する必要のある最大リクエスト数を指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
1000 |
例 |
|
reuse
に相当します。新しいパラメータでは、値YesまたはNoを使用せずに、mod_plsql
での接続プールの再利用を厳密に制御できます。
このDADの変数NLS_LANG
を指定します。このパラメータにより、環境変数NLS_LANG
がオーバーライドされます。このパラメータを設定すると、PL/SQL Gatewayは指定されているNLS_LANG
を使用してデータベースに接続します。接続後は、指定の言語と地域に切り替えるためにalter sessionコマンドが発行されます。中間層のキャラクタ・セットがデータベースのキャラクタ・セットと一致する場合、mod_plsql
にセッション変更コールは発行されません。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
CHAR
に設定されています。これは、PlsqlNLSLanguage内のキャラクタ・セットがデータベースのキャラクタ・セットと一致する必要があることを意味します。特殊な場合ですが、データベースとmod_plsql
のキャラクタ・セットがどちらも固定サイズで、幅が一致していれば、キャラクタ・セットが一致していなくてもかまいません。レスポンスのキャラクタ・セットは、常にmod_plsql
のキャラクタ・セットです。
PlsqlTransferMode
がRAW
に設定されている場合は、このパラメータを無視できます。
nls_lang
と呼ばれていました。
プロシージャ・コールにマップする仮想パスの別名を指定します。これはアプリケーション固有です。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
URLの仮想パスが、PlsqlPathAliasで構成されたパス別名と一致した場合にコールするプロシージャを指定します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
アプリケーション定義のPL/SQLファンクションを指定します。このファンクションにより、リクエストされたプロシージャのこれ以上の処理を許可または禁止できます。このファンクションは、このDADからの実行を禁止されたパッケージまたはプロシージャ・コールをブロック・アウトして、PL/SQLアプリケーションについて厳重なセキュリティを実装する場合に役立ちます。
このパラメータによって定義されるファンクションには、次のプロトタイプが必要です。
boolean function_name
(procedure_name
IN varchar 2)
起動時、引数procedure_name
には、リクエストで実行しようとしているプロシージャの名前が含まれます。
たとえば、ブラウザからコールできるすべてのPL/SQLアプリケーション・プロシージャがパッケージmypkg
内にある場合、このファンクションの実装は次のような簡単なものになります。
boolean my_validation_check (procedure_name varchar 2 is begin if (upper (procedure_name) like upper ('myschema.mypkg%')) then return TRUE else return FALSE end if; end;
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
mod_plsql
は、特定のスキーマまたはパッケージへのダイレクトURLアクセスを禁止しています。詳細は、PlsqlExclusionListを参照してください。
PlsqlAuthenticationModeがSingleSignOn
に設定されている場合、Cookie名を指定します。このパラメータがサポートされるのは、Oracle Application Serverのリリースのみで、Oracle Application Server PortalおよびOracle Application Server Single Sign-Onで使用されます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
DAD名と同じ |
例 |
|
SingleSignOn
認証を使用しない場合は、このパラメータを省略できます。他のほとんどの場合は、セッションのCookie名を省略する必要があります(また、このパラメータはデフォルトで自動的にDAD名に設定されます)。
sncookiename
と呼ばれていました。
各mod_plsql
リクエストの終了時に、パッケージとセッションの状態をクリーン・アップする方法を指定します。
StatelessWithResetPackageState
に設定すると、mod_plsql
は各mod_plsql
リクエストの終了時にdbms_session.reset_package_state
をコールします。
StatelessWithPreservePackageState
に設定すると、mod_plsql
は各mod_plsql
リクエストの終了時にhtp.init
をコールします。これにより、PL/SQL Web ToolKit内でセッション変数の状態がクリーン・アップされます。PL/SQLアプリケーションは、そのアプリケーション固有のセッション状態のクリーン・アップを行います。クリーン・アップに失敗すると異常動作が発生し、リクエストは以前のリクエストで変更された状態の認識または操作を開始します。
StatelessWithFastResetPackageState
に設定すると、mod_plsql
は各mod_plsql
リクエストの終了時にdbms_session.modify_package_state(dbms_session.reinitialize)
をコールします。このAPIはStatelessWithResetPackageState
モードよりはるかに高速であり、一部のラッチ競合問題は回避されますが、このAPIが存在するのはリリース8.1.7.2以上のデータベースのみです。このモードでは、メモリー使用量がデフォルト・モードよりやや多くなります。 カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
stateful
と呼ばれていました。
stateful=no
またはstateful=STATELESS_RESET
は、PlsqlSessionStateManagement StatelessWithResetPackageState
に対応しています。
stateful=STATELESS_FAST_RESET
は、PlsqlSessionStateManagement StatelessWithFastResetPackageState
に対応しています。
stateful=STATELESS_PRESERVE
は、PlsqlSessionStateManagement StatelessWithPreservePackageState
に対応しています。
mod_plsql
では、ステートフル・モードの操作はサポートされません。PL/SQLアプリケーションにステートフル動作を実装するには、状態をCookieまたはデータベース、あるいはその両方に保存します。
データベースからのデータをmod_plsql
に送信するためのモードを指定します。ほとんどのアプリケーションでは、デフォルト値CHAR
を使用します。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
例 |
|
CHAR
モードは使用できません。レスポンス・データが常にデータベースのキャラクタ・セットからmod_plsql
のキャラクタ・セットに変換されるためです。
RAW
送信モードはサポートされていませんでした。
デフォルトのBLOB
データ型を使用せずに、LONGRAW
データ型としてアップロードする拡張子を指定します。フィールドのファイル拡張子に複数行からなるディレクティブを指定することで、デフォルトを上書きできます。このフィールドに値*を指定すると、すべてのドキュメントがLONGRAW
型としてアップロードされます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
upload_as_log_raw
と呼ばれていました。
cache.conf
ファイルには、mod_plsql
用のキャッシュ設定が含まれています。このファイルには、mod_plsql
キャッシュ・システムの特性を指定するパラメータが含まれています。
次のパラメータは、cache.conf
で指定されます。
キャッシュ・ストレージのクリーン・アップの開始時刻を指定します。
この設定は、クリーン・アップが発生する正確な日と時刻を定義します。頻度は日次、週次および月次に設定できます。
Everyday
を使用します。クリーン・アップは毎日定義された時刻に始まります。たとえば、Everyday 2:00
と指定します。これにより、クリーン・アップが毎日午前2時(現地時間)に発生します。
Sunday
、Monday
、Tuesday
などを使用します。たとえば、Wednesday 15:30
と指定します。これにより、クリーン・アップが毎週水曜日の午後3時30分(現地時間)に発生します。
Everymonth
を使用します。クリーン・アップは月の最初の土曜日の定義された時刻に始まります。たとえば、Everymonth 23:00
と指定します。この場合、クリーン・アップが毎月最初の土曜日の午後11時(現地時間)に発生します。カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
Saturday 23:00 |
例 |
|
mod_plsql
によってキャッシュ・ファイルが書き出されるディレクトリを指定します。このディレクトリは存在している必要があります。存在しない場合Oracle HTTP Serverは起動しません。
UNIXでは、httpd子プロセスの所有者がこのディレクトリに対する書込み権限を持っている必要があります。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
なし |
例 |
|
古いバージョンでは、このパラメータはcache_dir
と呼ばれ、ORACLE_HOME
/Apache/modplsql/cfg/cache.cfg
の[PLSQL Cache]セクションにありました。
mod_plsql
のキャッシュを有効にします。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
Off |
例 |
|
OWA_CACHE
パッケージを使用しないことが確実な場合は、キャッシュを無効にできます。そのような場合は、パフォーマンス上のメリットはほとんどありません。
ORACLE_HOME
/Apache/modplsql/cfg/cache.cfg
の[PLSQL Cache]セクションにありました。
キャッシュ済ファイルを、キャッシュ・メンテナンスのために削除されるまで、ファイル・システム・キャッシュに置くことができる最大期間(日数)を指定します。
この設定は、キャッシュ・システムに古いコンテンツが含まれないようにするためです。この設定により、古いキャッシュ・ファイルが削除され、新しいファイル用のスペースが作成されます。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
30(30日) |
例 |
|
キャッシュ・ファイルの最大サイズを指定します。
この設定は、1つのファイルがキャッシュ全体を占有するのを防止するためのものです。一般的には、この値は総キャッシュ・サイズの約1〜3パーセントに設定することをお薦めします。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
1048576(1MB) |
例 |
|
古いバージョンでは、このパラメータはmax_size
と呼ばれ、ORACLE_HOME
/Apache/modplsql/cfg/cache/cfg
の[PLSQL Cache]セクションにありました。
キャッシュ・ディレクトリの合計サイズを指定します。
この設定により、キャッシュで使用できる領域の量が制限されます。PLSQLキャッシュとセッションCookieキャッシュがこのキャッシュ領域を共有します。この設定は絶対的な上限ではありません。通常の処理中に、一時的にこの上限を超えることがありますが、これは正常な動作です。
クリーン・アップ・アルゴリズムでは、この設定を使用してキャッシュ・ファイルをどの程度削減するかを判断します。したがって、実際のスペース上限は、物理的なストレージの最大使用可能サイズです。
このパラメータは、値としてバイト数を取ります。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
20971520(20MB) |
例 |
|
古いバージョンでは、このパラメータはtotal_size
と呼ばれ、ORACLE_HOME
/Apache/modplsql/cfg/cache/cfg
の[PLSQL Cache]セクションにありました。
AJP13
、FTP
、CONNECT
(SSL用)、HTTP/0.9、HTTP/1.0およびHTTP/1.1用のプロキシ機能が提供されます。
Apache HTTP Server 2.0では、FTPおよびHTTPのプロトコル処理が個別のモジュールに分割されています。これにより、ORACLE_HOME
/Apache/Apache/conf/httpd.conf
に次の変更が必要です。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so
このディレクティブは、ローカル・サーバーの領域にリモート・サーバーをマッピングします。ローカル・サーバーはリモート・サーバーのミラーとして機能します。
カテゴリ | 値 |
---|---|
構文 |
|
例 |
|
このディレクティブを使用すると、Oracle HTTP Serverにより、HTTPリダイレクト・レスポンスのLocationヘッダー内のURLが調整されます。これは、リバース・プロキシの構成において、リバース・プロキシの背後に存在するリモート・サーバー上のHTTPリダイレクトによるリバース・プロキシの回避を防ぐために必要です。
カテゴリ | 値 |
---|---|
構文 |
|
例 |
|
このオプションは、着信リクエストのproxypass行で指定されたホスト名のかわりに、Host:
行をプロキシ対象ホストに渡します。通常、このディレクティブはOff
に設定されています。リモート・サーバーで元のホストのヘッダーを評価する必要のある構成に便利です。
カテゴリ | 値 |
---|---|
構文 |
|
デフォルト |
|
関連資料
|
Oracle HTTP Serverでは、URL操作ツールとしてmod_rewrite
が提供されます。mod_rewrite
では、リクエストされたURLをリライトするために正規表現パーサーに基づくリライト・エンジンが使用されます。URL操作の粒度は、サーバー変数、環境変数、HTTPヘッダーおよびタイム・スタンプの書式の影響を受ける場合があります。
このモジュールは、サーバー単位のコンテキスト(httpd.conf
)およびディレクトリ単位のコンテキスト(.htaccess
)の両方でURL全体(path-info部を含む)に対して動作し、結果のquery-string部を生成できます。
この後の項の内容は、次のとおりです。
ApacheではHTTPがフェーズ単位で処理されます。これらの各フェーズ用のフックは、Apache APIにより提供されます。mod_rewrite
では、このうちの2つのフックを使用します。一方はURL-to-filename変換フックで、HTTPリクエストが読み取られてから認可が開始される間に使用されます。他方はFixupフックで、認可フェーズの後、およびディレクトリ単位の構成ファイル(.htaccess
)が読み取られてからコンテンツ・ハンドラが有効になるまでにトリガーされます。
mod_rewrite
は、構成構造から構成済ルールセットを読み取ります。サーバー・レベルのルールセットは起動時に最適であるように構成されますが、ディレクトリ・レベルのルールセットはカーネルによるディレクトリ・アクセス時に構成されます。
mod_rewrite
はルールセット内でルールを1つずつループし(RewriteRule
ディレクティブ)、特定のルールが一致すると、対応する条件をループします(RewriteCond
ディレクティブ)。最初に、URLが各ルールのPattern
に対して照合されます。照合できなかった場合、mod_rewrite
は対応しているルール条件を検索します。ルール条件が存在しない場合は、URLを文字列Substitution
からなる新規の値に単に置換して、ルールのループを継続します。ただし、条件が存在する場合は、内側のループを開始して各条件をリストされている順に処理します。
条件が存在する場合、変数を拡張して文字列TestString
を作成し、マップ参照を逆参照し、CondPattern
を拡張されたTestString
と照合します。パターンが一致しないと、条件および対応するルールのセット全体が失敗します。パターンが一致すると、他に使用可能な条件がなくなるまで次の条件が処理されます。すべての条件が一致すると、処理が続行され、Substitution
を使用してURLが置換されます。
http://
yourserver
//oldpath/rqstdrsrc
など、複数のスラッシュ(/)を含むURLを求めるリクエストでは、RewriteCond
およびRewriteRule
が正しく記述されていない場合、//oldpath
はこの2つのディレクティブをバイパスできます。
たとえば、次のルールがあるとします。
RewriteRule ^/oldpath(.*) /newpath$1 [R]
http://
yourserver
/oldpath/files
のリクエストはリダイレクトされ、予想どおりのページhttp://
yourserver
/newpath/files
が返されます。
ただし、http://
yourserver
//oldpath/files
のリクエストはこのルールをバイパスし、予想していなかったページを提供する可能性があります。ルールで複数のスラッシュ(/)が取得されることを確認することで、この問題を回避できます。この例を解決するには、次のように置換を使用する必要があります。
RewriteRule ^/+somepath(.*) /otherpath$1 [R]
この項では、次のmod_rewrite
のディレクティブについて説明します。
ランタイム・リライト・エンジンを有効または無効にします。Offに設定すると、このモジュールではランタイム処理が実行されません。このディレクティブを使用して、すべてのRewriteRule
のディレクティブをコメント化するかわりにモジュールを無効にします。
リライト構成は、デフォルトで継承されません。つまり、ReWriteEngine On
ディレクティブを使用する各仮想ホストに対して指定する必要があります。
RewriteOptions
'inherit'を指定すると、親の構成を子に継承させることができます。仮想サーバー・コンテキストでは、これはメイン・サーバーのマップ、条件およびルールが継承されることを意味します。ディレクトリ・コンテキストでは、これは親ディレクトリの.htaccess
構成の条件とルールが継承されることを意味します。
実行するリライト・アクションがサーバーによって記録されるファイルの名前を設定します。このファイル名の先頭にスラッシュ(/)がない場合は、Server Root
に対する相対ファイル名とみなされます。ロギングを無効にするには、RewriteLog
ディレクティブを削除またはコメント化するか、RewriteLogLevel 0
を使用します。ファイル名を/dev/null
に設定して、ロギングを禁止しないでください。このように設定すると、サーバーが低速になり、メリットはありません。
リライト・ログ・ファイルの詳細レベルを設定します。デフォルト・レベルである0(ゼロ)はロギングなしを意味し、9以上の値を指定すると事実上全アクションが記録されます。
ディレクトリ単位のリライト用のベースURLを明示的に設定します。リライト・ルールをディレクトリ単位の構成(.htaccess
)ファイルで使用できます。新規URLの置換が発生する場合は、サーバー処理にベースURLを追加する必要があります。これを可能にするには、対応するURL接頭辞またはURLベースをモジュールで認識する必要があります。デフォルトでは、この接頭辞が対応するファイル・パスです。ただし、ほとんどのWebサイトでは、URLは物理ファイル名のパスに直接関連付けられていません。このような場合は、RewriteBase
ディレクティブを使用して正しいURL接頭辞を指定する必要があります。
WebサーバーのURLが物理ファイルのパスに直接関連付けられていない場合は、RewriteRule
ディレクティブを使用する各.htaccess
ファイル内でRewriteBase
を使用する必要があります。
次のディレクトリ単位の構成ファイルがあるとします。
## /abc/def/.htaccess - - per-dir config file for directory /abc/def # /abc/def is the physical path of /xyz, RewriteEngine On RewriteBase /xyz RewriteRule ^oldstuff¥.html$ newstuff.html
例7-10では、/xyz/oldstuff.html
のリクエストは物理ファイル/abc/def/newstff.html
に正確にリライトされます。
表7-4に、リライト・ルールを使用するためのヒントを示します。
値 | 定義 |
---|---|
. |
任意の1文字 |
[char] |
大カッコで囲まれた任意の文字 |
b* |
任意の数の文字bからなる文字列 |
.* |
任意の数の任意の文字からなる文字列 |
たとえば、/demo1
、/demo2
および/demo3
からのリクエストを/alldemos
にリダイレクトするには、次のいずれかのリライト・ルールを記述します。
RewriteRule /demo. /alldemos [R]
または
RewriteRule /demo [123] /alldemos [R]
/DemoA
、/DemoB
および/DemoC
を/alldemos
にリダイレクトする場合は、次のように、リライト・ルールにNC(大文字と小文字の区別なし)を追加します。
RewriteRule /demo [123] /alldemos [R, NC]
ピリオド(.)は1文字のみを処理するため、このリライト・ルールは/demonstration1
から/demos
へのリダイレクトには機能しません。demoで始まるURLすべてを後続の文字に関係なくリダイレクト可能にするには、次のリライト・ルールを使用します。
RewriteRule ^/demo* /alldemos [R, NC]
前述の例では、^は始まりを意味し、*はdemoの後の任意の文字を意味します。
/demo1/not_just_index.html
に対してリクエストがある場合、前述のすべてリライト・ルールではリクエストは/alldemos/index.html
にリダイレクトされますが、これは意図した結果でない場合があります。表7-5に示すように、/alldemos
内の対応するファイルにリダイレクトする必要があります。
リクエストの内容 | リダイレクト先 |
---|---|
|
|
|
|
|
|
次のように、リライト・ルールに置換を使用する必要があります。
RewriteRule ^/demos1(.*)$ //alldemos/$1 [R NC]
このルールの内容は、次のとおりです。
happy.html
、go.jpg
およびlucky.jpg
など、demo1
の後に指定されている式の値を変数($1)として、/alldemos/
の後にこれを代入します。
リクエストをDocumentRoot
からnewroot
ディレクトリにリダイレクトする場合は、次のmod_rewrite
のディレクティブを設定します。
RewriteEngine On RewriteRule ^/(.*)$ /newroot/$1 [R]
あるディレクトリ(olddir
)から別のディレクトリ(newdir
)にファイル・リクエストを送信する場合は、次のディレクティブを設定します。
RewriteEngine On RewriteRule ^/olddir(.*)$ /newdir/$1 [R]
どちらの場合も、リクエストされたリソースがリダイレクト先で実際に使用可能かどうかを確認する必要があります。mod_rewrite
モジュールは、リクエストされたリソースが新しい場所にあるかどうかを確認しません。
HTTP
TRACE
メソッドを使用してリクエストをすべて無効にする場合は、次のmod_rewrite
のディレクティブを設定します。
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F]
Webアプリケーションを既知または未知の攻撃から保護して、Webアプリケーション・セキュリティを強化します。
リクエストの特性に基づいて環境変数を設定できます。
スペルに誤りがあるURLや、誤って大文字で記述されたURLが訂正されます。
サーバー・アクティビティとパフォーマンスに関するHTMLページが表示されます。
リクエストごとに一意のIDが作成されます。このモジュールは、UNIXでのみ使用可能です。
リクエストがユーザー固有のディレクトリにマップされます。
ログが作成され、ユーザー・アクティビティが追跡されます。
動的に構成された大量の仮想ホスト設定が有効になります。
|
Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|