Hyperwave モジュールは、PHP が Apache モジュールとしてコンパイル された場合に、最適化されています。 この場合、Apache が書き換えエンジンを使用する場合、内部の Hyperwave サーバーをほぼ完全にユーザーから隠すことが可能です。 以下の手順によりこのことを説明します。
Hyperwaveサポートを有効にしてApacheに組み込んだPHPは、wavemaster
に基づく本来のHyperwaveの手法を置換するものなので、Apacheサーバー
は、Hyperwave Webインターフェースとしてのみ処理を行うと仮定します。
これは必然ではありませんが、設定が容易になります。考え方は非常に
簡単です。まず最初に$_ENV['PATH_INFO']変数を評
価し、Hyperwaveオブジェクトの名前としてその値を処理するPHPスクリ
プトが必要です。このスクリプトを'Hyperwave'と
呼びましょう。URL http://your.hostname/Hyperwave/name_of_object
'name_of_object'という名前のHyperwaveオブジェ
クトを返します。オブジェクトの型に応じて、スクリプトは対応した処
理を行う必要があります。collectionの場合、恐らく子のリストを返す
ことになります。ドキュメントの場合、MIME型と内容を返すことになり
ます。Apacheの書換エンジンを使用した場合、若干の改善が見込まれま
す。ユーザーの立場で見ると、URL
http://your.hostname/name_of_object
がオブジェクトを返せば、より簡単になります。書き換えの規則は非常
に簡単です。
RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
この状態で、全てのURLはHyperwaveサーバーのオブジェクトに関係付け られています。これにより問題の解決が容易になります。'Hyperwave' スクリプト以外の検索といった他のスクリプトを実行することはできま せん。これは次のような別の規則により修正することができます。
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
これにより、ディレクトリ/usr/local/apache/htdocs/hwが追加の スクリプトや他のファイル用に確保されます。この規則は、一つ前の規 則よりも前に評価されることに注意してください。これには若干の欠点が あります。つまり、'hw/'で始まる名前を有する Hyperwave オブジェクトは全て隠されてしまいます。このため、このよ うな名前を使用しないようにしてください。例えば画像用により多くのディ レクトリが必要な場合、更に規則を加えるか一つのディレクトリに全て を置くかしてください。最後にRewriteEngineをオンにすることを忘れない でください。
RewriteEngine on
経験上、次のようなスクリプトが必要になることと思われます。
Rewrite Engineの一つの代わりとして、Apache ErrorDocumentディレクティブを使用することもで きます。しかし、ErrorDocument でリダイレクトさ れたページは、POSTデータを受け取ることはできないことに注意して下 さい。