Sun ONE ロゴ     前へ     目次     索引     次へ     
Sun ONE Portal Server, Secure Remote Access 6.0 管理者ガイド



第5章   リライタの設定


リライタは Web ページの内容を走査し、Web ページに埋め込まれたすべての URLをリライトします。

この章で扱う項目は次のとおりです。


リライタの概要

安全な環境では、ユーザーが家からイントラネットページにアクセスしようとすると、直接アクセスできないことがあります。 ただし、認証を受けた後、エンドユーザーはリライタを使用してイントラネットを参照できるようになります。このときリンクやリンクのページ上のURL が正しく参照されるようになります。 リライタはユーザーが表示する Web ページのコンテンツを走査し、そのページの URL を識別します。

リライタには主に 2 つの機能があります。

  • 相対 URL の絶対 URL への拡張

  • ゲートウェイ URL を既存の URL の前に指定

リライタが機能するためには次の操作が必要です。

  • Portal Server 管理コンソールを使用して、さまざまな URL をリライトするためのルールを定義します。 これらのルールのコレクションは、ルールセットと呼ばれます。

  • ゲートウェイ管理コンソールで、さまざまなドメインに適したルールセットを関連付けます。

相対 URL の絶対 URL への拡張

リライタは相対 URL を絶対 URL に拡張します。 例えば、ユーザーが次のサイトにアクセスしようとするとき、

<a href="../mypage.html">

リライタはこれを次のように解釈します。

<a href="http://yahoo.com/mypage.html">

ここでhttp://yahoo.com/test/ はページのベース URL です。

ゲートウェイ以外のシナリオでは、URL スクレイパープロバイダがこの機能を処理します。 URL Scraper プロバイダについての詳細は、Sun ONE Portal Server 管理者ガイドの第 7 章「リライタの管理」を参照してください。

ゲートウェイ URL を既存の URL の前に指定

ユーザーがゲートウェイを通じてイントラネットの Web ページにアクセスしようとするとき、リライタでゲートウェイ URL を既存の URL の前につける必要があります。 例えば、mymachine で html ページにアクセスするときは、次のように入力します。

<a href="http://mymachine.intranet.com/mypage.html>"

リライタは次のようにゲートウェイを参照する接頭辞を URL に指定します。

<a href="https://gateway.company.com/http://mymachine.intranet.com/ mypage.html>"

ユーザーがこのアンカーに関連するリンクをクリックすると、ブラウザがゲートウェイに照会を行います。 ゲートウェイは、mymachine.intranet.com から mypage.html のコンテンツをフェッチします。

ゲートウェイはいくつかのルールを使用して、フェッチされた Web ページのリライトする要素を判断します。


対象読者

このガイドは、組織の要求に応じて、リライタを設定しイントラネットのコンテンツをリライトする必要のある管理者を対象にしています。



このガイドは Sun ONE Portal Server 管理者ガイド の第 7 章「リライタの管理」と併せて読むようにしてください。

またコマンド行ユーティリティでリライタデータを管理する場合は、Sun ONE Portal Server 管理者ガイド の第 12 章「コマンド行ユーティリティ」も参照してください。



必要なルールを記述して、リライタを期待どおりに機能させる要件は次のとおりです。

  • HTML と HTML タグの理解

  • JavaScript の正しい知識

  • XML の基本的な知識


サポートされる URL と例外

このセクションでは、リライタでリライトされる URL の種類を説明します。 またリライタが処理しない例外もとりあげます。

サポートされる URL

RFC-1738 に指定されるすべての標準 URL、およびリライタによって HTTP か HTTPS がリライトされたすべての標準 URL。

標準 URL

プロトコルに HTTP か HTTPS を使用したすべての URL が認識されます。 大文字、小文字の区別はしません。 例えば、hTtP、HTtp、および httP はすべて有効です。 サンプル URL を次にリストします。

http://www.my.work.com/

http://www.w3.org:8000/imaginary/test

http://www.myu.edu/org/admin/people#andy

http://info.my.org/AboutUs/Index/Phonebook?dobbins

http://www.w3.org/RDB/EMP?where%20name%3Ddobbins

http://info.my.org/AboutUs/Phonebook

http://user:password@abc.com

標準以外の URL

リライタは標準以外の基本的な URL のリライトをサポートします。

標準以外の URL を標準形式に変換するための情報は、URL が表示されるページのベース URL から取り出されます。 これには次の情報が含まれます。

  • プロトコル

  • ホスト名

  • ポート

  • パス

バックスラッシュは、絶対 URL ではなく相対 URL に含まれる場合のみサポートされます。 例えば、http://abc.sesta.com\index.html はリライトされますが、http:\\abc.sesta.com はリライトされません。

例外

次の URL はリライトされません。

http:/abc.com


リライタルールとルールセットの定義

リライタは Web ページに表示されるさまざまな要素の URL 部分を修正するように設計されています。 Web ページのどの部分をリライトするか、またどのようにリライトするかをリライタで決定するためのルールを個別に記述する必要があります。 必要なルールの種類、および正確な構文は、次のセクションで説明します。

さまざまなカテゴリとサブカテゴリのルールセットは XML 形式で保存され、ルールセットと呼ばれます。

管理コンソールの Portal Server 設定の「リライタ (Rewriter)」セクションで、ルールセットと管理ルールを作成する必要があります。

Secure Remote Access には、次の各要素をリライトするためのルールセットがあらかじめパッケージされています。 これらのルールは XML 形式で Portal Server に格納されています。 ルールセットには、次のものがあります。

InstallDir/SUNWps/export/DefaultGatewayruleset.xml

InstallDir/SUNWps/export/Genericruleset.xml

詳細については、「パッケージ内のルールセット」のセクションを参照してください。

Web ページのコンテンツの種類に基づいて、複数のルールを定義する必要があります。 例えば、HTML コンテンツをリライトするのに必要なルールは、JavaScript コンテンツをリライトするためのルールと異なります。

リライタによりページがパースされている間、ルールが特定のステートメントに一致するまで、ルールセットのルールがページの各ステートメントに順番に適用されます。

コンテンツに基づき、リライタのルールは大きく次のカテゴリに分けられます。


パッケージ内のルールセット

Secure Remote Access には、Web ページの要素をリライトするためのルールセットがあらかじめパッケージされています。 これらのルールは XML 形式で格納されています。 ルールセットには、次のものがあります。

InstallDir/SUNWps/export/DefaultGatewayruleset.xml

InstallDir/SUNWps/export/Genericruleset.xml

これらのルールセットは、共通に使用する URL 命名規則と参照技術を使用した Web ページのリライトに便利です。

さらに、これらのルールセットにはゲートウェイの正しい機能に必要なルールと、NetMail、Netlet、NetFile などのアプリケーションが収められています。



カスタマイズを行う場合、汎用ルールセットのルールに必要なルールを追加して新しいルールセットを作成します。



パッケージ内のルールセットの復元

デフォルトゲートウェイルールセットまたは汎用ルールセットを間違って削除した場合、次のように復元することができます。

$ rwadmin store --runasdn "username" --password "password" InstallDir/SUNWps/export/DefaultGatewayruleset.xml

$ rwadmin store --runasdn "username" --password "password" InstallDir/SUNWps/export/Genericruleset.xml

ここでusernamepasswordamadminに指定されるものと同じです。



インストール時にパッケージされているデフォルトゲートウェイルールセットまたは汎用ルールセットが復元されます。 これらのルールセットをカスタマイズした場合、変更は復元されません。



ルールセットの作成とルールの定義

ルールセットの作成についての詳細は、Sun ONE Portal Server 管理者ガイドの第 7 章、「Sun ONE Portal Server リライタ」を参照してください。

新しいルールセットを作成した後、必要なルールを定義する必要があります。 ルールを記述する場合は次の点に注意してください。

  • すべてのルールは<ruleset> </ruleset>タグで括る必要があります。

  • ルールセットの<HTMLRules> </HTMLRules>セクションに、HTML コンテンツのリライトに必要なすべてのルールを指定します。

  • ルールセットの<JSRules> </JSRules>セクションに、JavaScript コンテンツのリライトに必要なすべてのルールを指定します。

  • ルールセットの<XMLRules> </XMLRules>セクションに、XML コンテンツのリライトに必要なすべてのルールを指定します。

  • イントラネットページで、リライトの必要のある URL を特定し、ルールセットの適切なセクション (HTML、JSRules、またはXMLRules) に必要なルールを指定します。

  • 必要なドメインにルールセットを割り当てます。 詳細については、「ルールセットのドメインへの割当て」 を参照してください。

  • 次のコマンドを指定してゲートウェイを再起動します。

    InstallDir/SUNWps/bin/gateway -n gateway profile name start


ゲートウェイサービスのリライタの設定

ゲートウェイサービスの「すべての URL をリライト」チェックボックスと「ドメインとサブドメインのプロキシ」リストにより、リライタの動作が決定します。

「ドメインとサブドメインのプロキシ」リストは、リライトする URL をゲートウェイに伝えます。 指定されたドメインとサブドメインのホストの参照のみが、リライタの候補になります。 「すべての URL をリライト」オプションを有効にすると、「ドメインとサブドメインのプロキシ」リストのエントリが上書きされます。

プロキシ管理についての詳細は、第2章 「ゲートウェイの管理」を参照してください。

すべての URL のリライト

ゲートウェイサービスで「すべての URL をリライト」オプションを有効にすると、「ドメインとサブドメインのプロキシ」リストのエントリをチェックせずに、リライタはすべての URL をリライトします。 「ドメインとサブドメインのプロキシ」リストのエントリは無視されます。

ゲートウェイのすべての URL のリライトを有効にする手順

  1. iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。

  2. 「サービス管理」を選択します。

  3. 「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。

    「ゲートウェイ」ページが表示されます。

  4. 編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。

    「ゲートウェイプロファイルを編集」ページが表示されます。

  5. 「すべての URL をリライト」チェックボックスを選択して、ゲートウェイによるすべての URL のリライトを有効にします。

  6. ページの上または下で「保存」をクリックし、変更内容を記録します。

  7. 変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。

    InstallDir/SUNWps/bin/gateway -n gateway profile name start

ルールセットのドメインへの割当て

特定のドメインが使用する特定のルールセットを指定できます。 特定のページがフェッチされるドメインに応じて、対応するルールセットが使用されます。

指定されたルールセットには関連するルールしか含まれないため、特定のルールセットを割り当てると処理速度が速くなります。 すべてのドメインに共通のルールセットを割り当てると、リライタがそのルールセットのすべてのルールを処理するための時間は、特定のページにルールの一部を割り当てた場合に比べて相当長くなります。

iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server設定」の「リライタ」に、必要なルールセットを作成します。 詳細については、Sun ONE Portal Server 管理者ガイドを参照してください。

デフォルトではドメインベースのルールセットリストに次の2つのエントリが追加されます。

default domain|default_gateway_ruleset

*|generic_ruleset

デフォルトドメインのすべてのページに対して、デフォルトゲートウェイのルールセットが適用されます。 他のすべてのページには、汎用ルールセットが適用されます。 デフォルトのゲートウェイルールセットと汎用ルールセットはパッケージ内のルールセットです。 詳細については、「パッケージ内のルールセット」を参照してください。



デスクトップに表示されるすべてのコンテンツについて、コンテンツがフェッチされる場所にかかわらず、デフォルトドメインのルールセットが使用されます。

例えば、URL yahoo.com のコンテンツを集めるようにデスクトップを設定すると仮定します。 Portal Server は sesta.com 内にあります。 sesta.com のルールセットがフェッチされたコンテンツに適用されます。





ルールセットを指定するドメインは、「ドメインとサブドメインのプロキシ」リストに表示されていなければなりません。



ドメインにルールセットを割り当てる手順

  1. iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。

  2. 「サービス管理」を選択します。

  3. 「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。

    「ゲートウェイ」ページが表示されます。

  4. 編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。

    「ゲートウェイプロファイルを編集」ページが表示されます。

  5. 「ドメインベースのルールセット」フィールドに、必要なドメインまたはホスト名およびルールセットを入力し、「追加」をクリックします。「ドメインベースのルールセット」リストにエントリが追加されます。

    ドメインまたはホスト名とルールセットは次の形式で指定します。

    ドメイン名|ルールセット名

    eng.sesta.com|default



    ルールセットを適用する順序は、ホスト名-サブドメイン-ドメインの順です。

    例えば、「ドメインベースのルールセット」リストに次のエントリを指定していると仮定します。

    sesta.com|ruleset1

    eng.sesta.com|ruleset2

    host1.eng.sesta.com|ruleset3

    ruleset3 host1 のすべてのページに適用されます。

    ruleset2 は、host1 から取り出されたページを除く eng のすべてのページに適用されます。

    ruleset1 は、eng サブドメインから取り出されたページを除くhost1 のすべてのページに適用されます。



  6. ページの上または下で「保存」をクリックし、変更内容を記録します。

  7. 変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。

    InstallDir/SUNWps/bin/gateway -n gateway profile name start

MIMEマッピングの指定

リライタでは、コンテンツタイプ、すなわち HTML、JAVASCRIPT、XML、WML に基づいて Web ページをパースするために4つのパーサが使用されます。 共通の MIME タイプは、デフォルトではこれらのパーサに関連付けられています。 ゲートウェイサービスの MIME マッピングフィールドで、これらのパーサに新しい MIME タイプを関連付けることができます。 これによって、リライタ機能が他の MIME タイプに拡張されます。

複数のエントリはセミコロン (;) またはカンマ (,) で区切ります。



ヒント MIME マッピングリストから不要なパーサを削除すると、処理速度が向上します。 例えば、特定のイントラネットのコンテンツにJavaScript が含まれないことが確実な場合は、MIME マッピングリストから JavaScript エントリを削除できます。



MIME マッピングを指定する手順

  1. iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。

  2. 「サービス管理」を選択します。

  3. 「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。

    「ゲートウェイ」ページが表示されます。

  4. 編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。

    「ゲートウェイプロファイルを編集」ページが表示されます。

  5. 「MIME マッピング」フィールドにスクロールし、編集ボックスに必要な MIME タイプを追加します。 セミコロンまたはカンマを使用し、複数のエントリを区切ります。

    エントリは HTML=text/html;text/htm の形式で指定します。

  6. 「追加」をクリックし、必要なエントリをリストに追加します。

  7. ページの上または下で「保存」をクリックし、変更内容を記録します。

  8. 変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。

    InstallDir/SUNWps/bin/gateway -n gateway profile name start


ルールでのパターンマッチングの使用

valuePatterns を使用すると、パターンマッチングを実行し、リライトが必要なステートメントの特定の部分を識別できます。

ルールの一部として valuePatterns を指定すると、一致したパターンに続くすべてのコンテンツがリライトされます。

次のサンプルフォームのルールを考えてみます。

<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|"]/>

ここで

source は、フォームが表示される UTML ページの URL です。

name はフォーム名です。

field は値をリライトする必要があるフォームのフィールドです。

valuePatterns はリライトする必要がある field 値の一部を示します。 0|1234| に続くすべてのコンテンツがリライトされます。

valuePatterns でのワイルドカードの使用

* 文字を使用して、リライトのパターンマッチングを実行できます。

valuePatterns フィールドに * を単独で指定することはできません。 * はあらゆる項目への一致を示すため、valuePattern に続くものはありません。したがってリライタは他にリライトするものがありません。 * は *abc などの他の文字列と一緒に使用できます。 この場合、*abc に続くすべてのコンテンツがリライトされます。



* はルールのどのフィールドでも、ワイルドカードとして使用できます。 ただしルールのすべてのフィールドに * を使用することはできません。 すべてのフィールドに * が含まれていると、ルールは無視されます。 エラーメッセージは表示されません。



* や ** は区切り文字と一緒に使用できます。区切り文字はオリジナルのステートメントに表示されて複数のフィールドを区切ります。 1 文字のワイルドカード (*) はリライトされないフィールドに一致し、2 文字のワイルドカード (**) はリライトが必要なフィールドに一致します。

表 5-1に * ワイルドカードの使い方の例を示します。 表は 3 つの列で構成されています。 最初の列にはリライトされるサンプルステートメントを、 2 番目の例には valuePatterns のサンプル値を、 3 番目の例にはリライト内容の説明をそれぞれ示します。


表 5-1    * ワイルドカードの使用例

URL

valuePatterns

説明

url1, url2, url3, url4  

valuePatterns = "**, *, **, *"  

この場合 ** がリライトされる部分を表すため、url1 url3 がリライトされます。  

XYZABChttp://host1.
sesta.com/dir1.html
 

valuePatterns = "*ABC"  

この場合、http://host1.sesta.com.dir1.html の部分のみがリライトされます。 XYZABC * に一致するため、ステートメントの他の部分は破棄され、*ABC の後の部分をリライトする必要があります。  

"0|dir1|dir2|dir3|dir4|test|url1  

valuePatterns = "*|*|**|*|**|*|"  

この場合dir2dir4、およびurl1 がリライトされます。 リライトが必要な最後のフィールドは、** を使用して指定する必要がありません。  


HTML コンテンツのルール

Web ページの HTML コンテンツは、さらに属性、JavaScript トークン、フォーム、アプレットに分類できます。 これに従って、HTML コンテンツのルールは次のように分類されます。

HTML コンテンツの属性ルール

このルールは値をリライトする必要のあるタグの属性を特定します。 これらのタグには次のものがあります。

  • イメージの場所を示す "img" タグの src 属性

  • 別のページまたはファイルを示す "archive" タグの href 属性

リライタはゲートウェイ URL に接頭辞を指定して、これらの値を修正します。

構文

<Attribute name="attributename" [tag="*" valuePatterns=""]/>

ここで

name は属性名です。

tag は属性が属するタグを指定します。

valuePatterns は属性と一致する可能性のあるパターンを指定します。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

ページのベース URL が次の場所に属していると仮定します。

http://mymachine.intranet.com/mypage.html

ページコンテンツ

<a href="http://mymachine.intranet.com/mypage.html>

ルール

<Attribute name="href"/>

または

<Attribute name="href" tag="a"/>

出力

<a href=gateway URL/http://mymachine.intranet.com/mypage.html>

説明

リライトされる URL はすでに絶対URL であるため、ゲートウェイ URL のみがこの URL に接頭辞として付けられます。

HTML コンテンツの JavaScript トークンルール

値に JavaScript が含まれ、この JavaScript を JavaScript パーサで解析し、リライト内容を判断する必要のある HTML 属性。

大半の場合、デフォルトのゲートウェイルールセットで指定されるルールで、JavaScript トークンの URL を十分にリライトできます。

構文

<JSToken>token name</JSToken>

ここで

token name は、変換する必要のある JavaScript を値に持つ属性です。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/focus.html

ページコンテンツ
<Form>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','focus');return;">

</Form>

ルール
<JSToken>onClick</JSToken>

<Function type="URL" name="Check" paramPatterns="y,"/>

出力
<Form>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway URL/http://abc.sesta.com/focus.html','focus');return;">

</Form>

説明

指定されたページコンテンツをリライトするには、2 つのルールが必要です。 最初のルールは onClick JavaScript トークンを特定します。 2 番目のルールは、リライトが必要な check 関数のパラメータを特定します。 この場合、paramPatterns に値 y が指定されているため、最初のパラメータのみがリライトされます。

ゲートウェイ URL と JavaScript トークンが表示されるベース URL が、必要なパラメータの前に指定されます。

HTML コンテンツのフォームルール

ユーザーが参照する HTML ページにはフォームが含まれていることがあります。 いくつかのフォームの要素は値として URL をとることがあります。

構文

<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|"]/>

where

Form sourceはフォームが表示される HTML ページの URL です。

name はフォーム名です。

field は値をリライトする必要があるフォームのフィールドです。

valuePatterns はリライトする必要がある field 値の一部を示します。 valuePatterns に続くすべてのコンテンツがリライトされます。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

ページのベース URL が次の場所に属していると仮定します。

http://test.siroe.com/testcases/html/form.html

ページコンテンツ

ページ URI を form.html とし、サーバーの root ディレクトリに格納されていると仮定します。

<form name=form1 method=POST action="http://test.siroe.com/testcases/html/form.html">

<input type=hidden name=abc1 value="0|1234|/test.html">

</form>

ルール

<Form source="*/form.html" name="form1" field="abc1" valuePatterns="0|1234|"/>

<Attribute name="action"/>

出力

<FORM name=form1 method=POST action="gateway URL://test.siroe.com/testcases/html/form.html">

<input type=hidden name=abc1 value="0|1234|gateway URL/http://test.siroe.com/test.html">

</FORM>

説明

action タグは定義済みのいくつかの HTML 属性ルールを使用してリライトされます。

フォーム value は出力に示されるようにリライトされます。 指定されたvaluePatterns が検索され、valuePatterns に続くすべてのコンテンツはゲートウェイ URL と、フォームが表示されるページのベース URL を先頭に付けてリライトされます。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

HTML コンテンツのアプレットルール

単一の Web ページに複数のアプレットが含まれていることや、各アプレットに多くのパラメータが指定されていることがあります。 アプレットの URL のリライタルールには、次の構文に説明するようにパターンマッチング情報を含める必要があります。

リライタはルールに指定された値をアプレットの内容と照合し、必要に応じて URLを修正します。 この置換はサーバーで実行され、ユーザーが特定の Web ページを参照しているときには行われません。

値の一部にワイルドカード (*) も使用できます。 例えば、パラメータ名が * であれば、リライタはアプレットでパラメータ名を比較しません。

構文

<Applet source="*/somehtml.jsp" code="classname.class" param="parametername" [valuePatterns="*"] />

ここで

source はアプレットを含むページの URL です。

code はアプレットクラスの名前です。

param は値をリライトする必要のあるパラメータ名です。

valuePatterns はリライトで照合されるパターンです。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

ページのベース URL が次の場所に属していると仮定します。

http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html

ページコンテンツ

<applet codebase=appletcode code=RewriteURLinApplet.class archive=/test.jar>

<param name=Test1 value="/index.html">

</applet>

ルール

<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*"/>

出力

<APPLET codebase=gateway URL://abc.siroe.com/casestudy/test/HTML/applet/appletcode code=RewriteURLinApplet.class archive=/test.jar>

<param name=Test1 value="gateway URL://abc.siroe.com/index.html">

</APPLET>

説明

デフォルトのゲートウェイルールセットに <Attribute name="codebase"/> が定義されているため、codebase=appletcode はリライトされます。

名前が Test で始まるすべてのパラメータがリライトされます。 アプレットコードが表示されるページのベース URL、およびゲートウェイ URL が value フィールドの前に指定されます。


JavaScript コンテンツのルール

JavaScript はさまざまな場所に URL を格納します。 リライタは JavaScript を直接パースできないため、URL の部分を判断できません。 JavaScript プロセッサで URL の解釈をできるようにするために、一部のルールを記述する必要があります。

URL を含む JavaScript 要素は次のように分類されます。

JavaScript の変数

JavaScript 変数はさらに 5 つのカテゴリに分類されます。

JavaScript の URL 変数

URL 変数の右側には URL 文字列が表示されます。

構文

<Variable type="URL">variablename</Variable>

ここで

variablename には変数名を指定します。 variablename の値がリライトされます。

ページのベース URL が次の場所に属していると仮定します。

http://abc.siroe.com/tmp/page.html

ページコンテンツ

<script LANGUAGE="Javascript">

<!--

//URL Variables

var imgsrc="/tmp/tmp.jpg";

var imgsrc="http://srap.sesta.com/tmp/tmp.jpg";

//-->

</SCRIPT>

ルール

<Variable type="URL">imgsrc</Variable>

出力

var imgsrc="gateway URL://abc.siroe.com/tmp/tmp.jpg";

var imgsrc="gateway URL://srap.sesta.com/tmp/tmp.jpg";

説明

タイプが URL で名前に imgsrc が含まれるすべての変数がリライトされます。 出力の最初の行では、ゲートウェイ URL と変数が表示されるページのベース URLが先頭に指定されます。 2 行目にはすでに絶対パスが指定されているため、ゲートウェイ URL のみが接頭辞として付けられます。

JavaScript の EXPRESSION 変数

式変数の右側には式が表示されます。 この式の結果が URL です。 リライタは、このような式をサーバーで評価できないため、HTML ページに JavaScript 関数(psSRAPRewriter_convert_expression) を追加します。 この関数はパラメータに式をとり、クライアントブラウザで要求される URL に対して式を評価します。

ステートメントに含まれる URL が単一の URL か EXPRESSION URL か明らかでないときは、両方のシナリオを処理する EXPRESSION ルールを使用することをお勧めします。

構文

<Variable type="EXPRESSION">y1</Variable>

ここで

y1 は JavaScript 式変数です。

ページのベース URL が次の場所に属していると仮定します。

http://abc.siroe.com/dir1/dir2/page.html

ページコンテンツ

<script LANGUAGE="Javascript">

<!--

//Expression variables

var expvar="../../images/graphics"+".gif";

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

var expvar="/images/graphics"+".gif";

//-->

</SCRIPT>

ルール

<Variable type="EXPRESSION">expvar</Variable>

出力

var expvar=psSRAPRewriter_convert_expression("../../images/graphics"+". gif");

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

var expvar=psSRAPRewriter_convert_expression("/images/graphics"+".gif") ;

説明

関数 psSRAPRewriter_convert_expression が、式変数 expvar の右側の部分に先行して指定されます。 この関数は式を処理し、実行時にコンテンツをリライトします。

JavaScript の DHTML 変数

これらは HTML コンテンツを保持する JavaScript 変数です。

構文

<Variable type="DHTML">y1</Variable>

ここで

y1 は JavaScript DHTML 変数です。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/graphics/set1/graphics/jsscript/JSVAR/page.htm l

ページコンテンツ

<script LANGUAGE="Javascript">

<!--

//DHTML Var

var dhtmlVar="<a href=../../images/test.html>"

var dhtmlVar="<a href=/images/test.html>"

var dhtmlVar="<a href=images/test.html>"

//-->

</SCRIPT>

ルール

<Variable type="DHTML">dhtmlVar</Variable>

<Attribute name="href"/>

or

<Attribute name="href" tag="a"/>

出力

//DHTML Var

var dhtmlVar="<a href=gateway URL://abc.sesta.com/graphics/set1/graphics/images/test.html>"

var dhtmlVar="<a href=gateway URL://abc.sesta.com/images/test.html>"

var dhtmlVar="<a href=gateway URL://abc.sesta.com/graphics/set1/graphics/jscript/JSVAR/images/tes t.html>"

//-->

説明

JavaScript パーサは dhtmlVar の値を HTML コンテンツとして読み取ります。 HTML ルールがページに適用されると、2 番目のルール(Attribute name="href")が適用され、URL がリライトされます。

JavaScript の DJS (Dynamic JavaScript) 変数

これらは JavaScript コンテンツを保持する JavaScript 変数です。

構文

<Variable type="DJS">y1</Variable>

ここで

y1 は JavaScript DHTML 変数です。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html

ページコンテンツ

//DJS Var

var dJSVar="var dJSimgsrc='/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='../tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp.jpg';"

ルール

<Variable type="DJS">dJSVar</Variable>

<Variable type="URL">dJSimgsrc</Variable>

出力

//DJS Var - need 2 rules

var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/tmp/tmp.jpg';"

説明

ここでは 2 つのルールが要求されます。 最初のルールはDynamic JavaScript 変数 dJSVar を検索します。 この変数の値は、再びタイプ URL の JavaScript になります。 2 番目のルールが適用されて、この JavaScript 変数の値がリライトされます。

JavaScript のシステム変数

ユーザーが宣言する変数ではありませんが、JavaScript 標準の一部として使用できます。 例えば window.location.pathname のようになります。

構文

<Variable type="SYSTEM">variable.name</Variable>

ここで

variable.name はシステム変数です。

ページのベース URL が次の場所に属していると仮定します。

http://abc.siroe.com/dir1/page.html

ページコンテンツ

<script LANGUAGE="Javascript">

<!--

//SYSTEM Var

alert(window.location.pathname);

//-->

</SCRIPT>

ルール

<Variable type="SYSTEM">window.location.pathname</Variable>

出力

</SCRIPT>

<SCRIPT LANGUAGE="Javascript">

<!--

//SYSTEM Var

alert(psSRAPRewriter_convert_pathname(window.location.pathname));

//-->

</SCRIPT>

説明

リライタはルールで指定されたシステム変数を検索し、psSRAPRewriter_convert_pathname 関数を前に指定します。 この関数は実行時にシステム変数を処理し、処理後の URL をリライトします。

JavaScript の関数パラメータ

関数パラメータは 4 つのカテゴリに分類されます。

JavaScript の URL パラメータ

URL を直接含む文字列パラメータです。

構文

<Function type="URL" name="test" paramPatterns="y,y," />

ここで

type は関数のタイプです。

name は評価の必要がある関数の名前です。

paramPatterns は関数内でリライトが必要なパラメータを指定します。

y - y の部分はリライトの必要があるパラメータを示します。 例えば、構文で最初と 2 番目のパラメータをリライトする必要がありますが、3 番目のパラメータをリライトされません。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html

ページコンテンツ

<script language="JavaScript">

<!--

function test(one,two,three){

alert(one + "##" + two + "##" +three);

}

test("/test.html","../test.html","123");

window.open("/index.html","gen",width=500,height=500);

//-->

</SCRIPT>

ルール

<Function type="URL" name="test" paramPatterns="y,y,"/>

<Function type="URL" name="window.open" paramPatterns="y,,,"/>

出力

<SCRIPT language="JavaScript">

<!--

function test(one,two,three) {

alert(one + "##" + two + "##" +three);

}

test("gateway URL://abc.sesta.com/test.html","gateway URL://abc.sesta.com/test/rewriter/test1/jscript/test.html","123");

window.open("gateway URL://abc.sesta.com/index.html","gen",width=500,height=500);

//-->

</SCRIPT>

説明

最初のルールは、関数 test の最初の 2 つのパラメータをリライトする必要があることを示します。 したがって test 関数の最初の 2 つのパラメータがリライトされます。 2 番目のルールは、window.open 関数の最初のパラメータをリライトする必要があることを特定します。 window.open 関数内の URL に、ゲートウェイ URL と関数パラメータが含まれるページのベース URL が先頭に付けられます。

JavaScript の EXPRESSION パラメータ

これらは評価後に URL になる関数内の変数です。

構文

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>

ここで

jstest1 は関数名です。

y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/dir1/dir2/page.html

ページコンテンツ

<script language="JavaScript">

<!--

function jstest2(){

return ".html";

}

function jstest1(one){

return one;

}

var dir="/images/test"

var test1=jstest1(dir+"/test"+jstest2());

document.write("<a HREF="+test1+">TEST</a>");

alert(test1);

//-->

</SCRIPT>

ルール

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>

出力

function jstest2(){

return ".html";

}

function jstest1(one){

return one;

}

var dir="/images/test"

var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2 ()));

document.write("<a HREF="+test1+">TEST</a>");

alert(test1);

説明

このルールは、jstest1 関数の最初のパラメータをリライトする必要があることを示します。 サンプルページのコンテンツでは、最初のパラメータは実行時にのみ評価される式です。 リライタはこの式の前にpsSRAPRewriter_convert_expression 関数を付けます。 式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力をリライトします。



上記の例では、変数 test1 を JavaScript 変数ルールの一部として指定する必要がありません。 jstest1 の関数ルールはリライトの際に注意が必要です。



JavaScript の DHTML パラメータ

HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。

構文

<Function type="DHTML" name="name" paramPatterns="y"/>

ここで

name は関数名です。

y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。

ページのベース URL が次の場所に属していると仮定します。

http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html

ページコンテンツ

<script>

<!--

document.write('<a href="/index.html">write</a><BR>')

document.writeln('<a href="index.html">writeln</a><BR>')

document.write("http://abc.sesta.com/index.html<BR>")

document.writeln("http://abc.sesta.com/index.html<BR>")

//-->

</SCRIPT>

ルール

<Function type="DHTML" name="document.write" paramPatterns="y"/>

<Function type="DHTML" name="document.writeln" paramPatterns="y"/>

<Attribute name="href"/>

出力

<SCRIPT>

<!--

document.write('<a href="gateway URL://xyz.siroe.com/index.html">write</a><BR>')

document.writeln('<a href="gateway URL://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/index.html"> writeln</a><BR>')

document.write("http://abc.sesta.com/index.html<BR>")

document.writeln("http://abc.sesta.com/index.html<BR>")

//-->

</SCRIPT>

説明

最初のルールは、関数 document.write の最初のパラメータをリライトする必要があることを示します。 2 番目のルールは、関数 document.writeln の最初のパラメータをリライトする必要があることを指定します。 3 番目のルールは、名前に href を含むすべての属性をリライトする必要があることを指定する簡単な HTML ルールです。 この例では、DHTML パラメータルールは関数内のリライトの必要があるパラメータを特定します。 この場合、HTML 属性ルールが適用され、特定されたパラメータが実際にリライトされます。

JavaScript の DJS パラメータ

Dynamic JavaScript パラメータは、必要に応じて出力をリライトするために 2 つのルールを必要とします。

構文

<Function type="DJS" name="name" paramPatterns="y"/>

ここで

name は関数名です。

y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/page.html

ページコンテンツ

<script>

menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location='http://abc.sesta.com'"));

</script>

ルール

<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/>

<Variable type="URL">top.location</Variable>

出力

<script>

menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location='gateway URL://abc.sesta.com'"));

</script>

説明

最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定します。 JavaScript 内で、変数 top.location もリライトする必要があります。 この変数は 2 番目のルールを使用してリライトされます。


XML コンテンツのルール

Web ページには、URL を含む XML コンテンツが含まれていることがあります。 リライトが必要な XML コンテンツは、2 つのカテゴリに分類されます。

XML のタグテキスト

リライタは、TAG 名に基づいて XML コンテンツを変換します。

構文

<TagText tag="attribute" attributePatterns="name=src"/>

ここで

attribute はタグ名です。

name=src ここで src は属性の名前を指定します。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/test/rewriter/test1/xml/page.html

ページコンテンツ

<xml><attribute name="src">test.html</attribute></xml>

<xml><attribute>abc.html</attribute></xml>

ルール

<TagText tag="attribute" attributePatterns="name=src"/>

出力

<xml><attribute name="src">gateway URL://abc.sesta.com/test/rewriter/test1/xml/test.html</attribute></ xml>

<xml><attribute>abc.html</attribute></xml>

説明

ページコンテンツの最初の行には、名前 src を含む属性が指定されているため、指定されたルールに基づいてリライトされます。 ページコンテンツの 2 行目には、名前 src を含む属性が指定されていないため、リライトは行われません。

XML の属性

XML 属性のルールは、HTML の属性ルールに類似しています。 "HTML コンテンツの属性ルール" を参照してください。

リライタは属性とタグ名に基づいて属性値を変換します。

構文

<Attributes>

<Attribute name="href" [tag="abc" valuePatterns="123|45|*"]/>

</Attributes>

ここで

name は属性名です。

tag はタグ名です。

valuePatterns はリライトする必要がある文字列の部分を示します。 valuePatterns に続くすべてのコンテンツがリライトされます。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

ページのベース URL が次の場所に属していると仮定します。

http://abc.sesta.com/test/rewriter/test1/xml/page.html

ページコンテンツ

<xml><baseroot href="/root.html"/></xml>

<xml><img href="image.html"/></xml>

<xml><string href="1234|substring.html"/></xml>

<xml><check href="1234|string.html"/></xml>

ルール

<Attribute name="href"tag="check" valuePatterns="1234|"/>

出力

<xml><baseroot href="/root.html"/></xml>

<xml><img href="image.html"/></xml>

<xml><string href="1234|substring.html"/></xml>

<xml><check href="1234|gateway URL://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml>

説明

上記の例では、4 行目のみがルールに指定されたすべての条件に合致するためリライトされます。

valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。


スタイルシートのカスケード

HTML ページのカスケードスタイルシートも変換されます。 この変換に定義されるルールはありません。これは URL が CSS の url() 関数にのみ表示されるためです。


クライアント側のリライト

JavaScript の変数と関数パラメータの値は、サーバー側で判断できません。 この値は、実行時に必要に応じてクライアント側で判断しリライトする必要があります。 リライタはこのような変数を、変数の前にラッパー関数を付けて処理します。

リライタにはこのような関数が 2 つ用意されています。

psSRAPRewriter_convert_expression

この関数は JavaScript の EXPRESSION 変数と EXPRESSION 関数に追加されます。 この関数はパラメータに式をとり、クライアントブランザで要求される URL に対して式を評価します。

psSRAPRewriter_convert_pathname

この関数は、JavaScript 標準の一部として使用できるシステム変数に使用されます。 リライタはルールで指定されたシステム変数を検索し、psSRAPRewriter_convert_pathname 関数を前に指定します。 この関数は実行時にシステム変数を処理し、処理後の URL をリライトします。


サンプルルールセット

このセクションでは、サンプルルールセットを示します。 ケーススタディでは、リライタがこれらのルールを解釈する方法を示します。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!--

Rules for integrating a mail client with the gateway.

-->

<!DOCTYPE ruleset SYSTEM "jar://rewriter.jar/resources/ruleset.dtd">

<ruleset type="GROUPED" id="owa">

<HTMLRules>

<Attribute name="action" />

<Attribute name="background" />

<Attribute name="codebase" />

<Attribute name="href" />

<Attribute name="src" />

<Attribute name="lowsrc" />

<Attribute name="imagePath" />

<Attribute name="viewClass" />

<Attribute name="emptyURL" />

<Attribute name="draftsURL" />

<Attribute name="folderURL" />

<Attribute name="prevMonthImage" />

<Attribute name="nextMonthImage" />

<Attribute name="style" />

<Attribute name="content" tag="meta" />

</HTMLRules>

<JSRules>

<!-- Rules for Rewriting JavaScript variables in URLs -->

<Variable type="URL"> _fr.location </Variable>

<Variable type="URL"> g_szUserBase </Variable>

<Variable type="URL"> g_szPublicFolderUrl </Variable>

<Variable type="URL"> g_szExWebDir </Variable>

<Variable type="URL"> g_szViewClassURL </Variable>

<Variable type="URL"> g_szVirtualRoot </Variable>

<Variable type="URL"> g_szBaseURL </Variable>

<Variable type="URL"> g_szURL </Variable>

<Function type="EXPRESSION" name="NavigateTo" paramPatterns="y"/>

</JSRules>

<XMLRules>

<Attribute name="xmlns"/>

<Attribute name="href" tag="a"/>

<TagText tag="baseroot" />

<TagText tag="prop2" />

<TagText tag="prop1" />

<TagText tag="img" />

<TagText tag="xsl:attribute"

attributePatterns="name=src" />

</XMLRules>

</ruleset>


ケーススタディ

このセクションでは、サンプルメールクライアントのソース HTML ページを説明します。 このケーススタディでは、予測されるシナリオおよびルールのすべてについては扱いません。 イントラネットページにルールを適用するために使用するサンプルルールセットのみ説明します。

想定

このケーススタディは次のような想定で行います。

  • メールクライアントのベース URL は、abc.siroe.com とします。

  • ゲートウェイ URL は gateway.sesta.com とします。

  • ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストでエントリを関連付けます。

サンプルページ 1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!-- saved from url=(0053)http://abc.siroe.com/mailclient/destin/?Cmd=navbar -->

<HTML XMLNS:WM><HEAD>

<META http-equiv=Content-Type content="text/html; CHARSET=utf-8">

<META http-equiv=Pragma content=no-cache>

<META http-equiv=Expires content=0><!--Copyright (c) 2000 Microsoft Corporation. All rights reserved.--><!--CURRENT FILE== "IE5" "WIN32" navbar -->

<STYLE>WM\:DROPMENU {

BEHAVIOR: url(http://abc.siroe.com/mailweb/controls/dropmenu.htc)

}

</STYLE>

<LINK href="destin_files/navbar.css" type=text/css rel=stylesheet>

<SCRIPT language=javascript>

var g_szUserBase= "http://abc.siroe.com/mailclient/destin"+"/";

var g_szFolder= ".";

var g_szVirtualRoot= "http://abc.siroe.com/mailweb";

var g_szImagePath= g_szVirtualRoot + "/img/";

</SCRIPT>

<SCRIPT src="/destin_files/navbar.js"></SCRIPT>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>

<BODY oncontextmenu=return(event.ctrlKey); onselectstart=return(false);

id=outbar_mainbody style="BACKGROUND-COLOR: appworkspace" leftMargin=0

topMargin=0 scroll=no>

<TABLE class=nbTableMain id=nbTableMain style="HEIGHT: 100%" cellSpacing=0

cols=1 cellPadding=0 rows="2">

<TBODY>

<TR>

<TD class=treeBrand>

<DIV class=treeOFLOW><IMG

style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"

src="/destin_files/logo-ie5.gif" border=0></DIV></TD></TR>

<TR height="100%">

<TD>

<TABLE class=nbTable cellSpacing=0 cols=1 cellPadding=0 rows="4">

<TBODY>

<TR>

<TD class=nbFlybar id=show_navbar onkeydown=flybar_keydown()

onclick=ToggleTab(this.id) tabIndex=0 noWrap>

<DIV class=treeOFLOW>Shortcuts</DIV></TD></TR>

<TR style="HEIGHT: 100%">

<TD id=idOutbarpane style="TEXT-ALIGN: center" vAlign=top><A

id=inbox

href="http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&am p;Page=1"

target=viewer alt="Go to inbox"><IMG class=nbImage alt="Go to inbox"

src="destin_files/navbar-inbox.gif"></A>

<DIV class=nbLabel>Inbox</DIV><BR><A id=calendar

href="http://abc.siroe.com/mailclient/destin/Calendar/?Cmd=contents "

target=viewer alt="Go to calendar"><IMG class=nbImage

alt="Go to calendar" src="destin_files/navbar-calendar.gif"></A>

<DIV class=nbLabel>Calendar</DIV><BR><A id=contacts

href="http://abc.siroe.com/mailclient/destin/Contacts/?Cmd=contents "

target=viewer alt="Go to contacts"><IMG class=nbImage

alt="Go to contacts" src="destin_files/navbar-contacts.gif"></A>

<DIV class=nbLabel>Contacts</DIV><BR><A id=options

href="http://abc.siroe.com/mailclient/destin/?Cmd=options"

target=viewer alt="Go to options"><IMG class=nbImage

alt="Go to options" src="destin_files/navbar-options.gif"></A>

<DIV class=nbLabel>Options</DIV></TD></TR>

<TR style="HEIGHT: 1.5em">

<TD class=nbFlybar id=show_folders onkeydown=flybar_keydown()

onclick=ToggleTab(this.id) tabIndex=0 noWrap>

<DIV class=treeOFLOW>Folders</DIV></TD></TR>

<TR>

<TD class=nbTreeProgress id=treeProgress style="DISPLAY: none"

vAlign=top noWrap><SPAN id=idLoading

style="OVERFLOW: hidden">Loading...</SPAN>

</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>

</BODY></HTML>

説明


表 5-2    サンプルルールセットとケーススタディのマッピング 

ページコンテンツ

適用されるルール

リライタの出力

説明

var g_szVirtualRoot="http: //abc.siroe.com/mailwe b";

 

サンプルルールセットの JSRules セクション:

<Variable type="URL"> g_szVirtualRoot </Variable>

 

var g_szVirtualRoot= "http://gateway.sesta. com/http://abc.siroe.c om/mailweb";

 

g_szVirtualRoot は単一の URL を値に持つ変数です。

このルールは、タイプ URL の変数g_szVirtualRoot を検索するようにリライタに伝えます。 このような変数が Web ページに存在する場合、リライタはこれを絶対 URL に変換し、ゲートウェイ URL を接頭辞として付けます。  

src="/destin_files/log o-ie5.gif"

 

サンプルルールセットの HTMLRules セクション:

<Attribute name="src" />  

src="http://gateway.se sta.com/http://abc.sir oe.com/destin_files/lo go-ie5.gif

 

src は属性名です。タグまたは valuePattern は付きません。

このルールは、名前 src を含むすべての属性を検索し、その属性の値をリライトするようにリライタに伝えます。  

href="http://abc.siroe .com/mailclient/destin /Inbox/?Cmd=contents&a mp;Page=1"

 

サンプルルールセットの HTMLRules セクション:

<Attribute name="href"/>  

href="http://gateway.sesta.com/http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&amp;Page=1"  

href は属性名です。タグまたは valuePattern は付きません。

このルールは、名前 href を含むすべての属性を検索し、その属性の値をリライトするようにリライタに伝えます。  


リライタのルールの記述

リライタが正しく機能するように、イントラネットページのすべての条件に合う総合的なルールセットを記述する必要があります。 次のリストの一般的な手順に従ってルールを記述してください。

  • コンテンツのリライトが必要な HTML ページを含むディレクトリを特定します。

  • これらのディレクトリで、リライトが必要なページを特定します。

  • 各ページでリライトが必要な URL を特定します。 「http」および「/」を検索すると、ほとんどの URL を簡単に見つけることができます。

  • URL のコンテンツタイプ、すなわち HTML、JavaScript、XML のいずれかを特定します。 各コンテンツタイプ、詳細な分類、および各 URL タイプのルール構文については、次のセクションを参照してください。

  • これらの各 URL をリライトするのに必要なルールを記述するには、iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で必要なルールセットを編集します。



    ルールを記述する場合、ルールの順序に注意してください。 ルールはルールセットに表れる順番で、ページ内のステートメントに適用されます。 特定のルール、および「*」を含む一般のルールを適用する場合は、特定のルールを最初に適用し、次に一般のルールを適用するようにしてください。 この方法をとらないと、特定のルールを適用する前でも、一般のルールがすべてのステートメントに適用されます。



  • これらのルールを結合し、そのドメインのルールセットにまとめます。


サンプルの操作

このセクションでは、リライトが必要なコンテンツを含む簡単な HTML ページについて説明します。 また、各サンプル HTML ページのコンテンツのリライトに必要なルールと、リライトされた HTML ページについても説明します。

これらのすべてのサンプルページは、portal server URL/rewriter ディレクトリ内にあります。 ルールを適用する前にページ内を参照し、リライトされゲートウェイを通じて出力されたファイルを確認し、ルールがどのように機能しているかを確認します。 一部のサンプルでは、ルールがすでにデフォルトのゲートウェイルールセットの一部に含まれています。 また別のサンプルでは、デフォルトのゲートウェイルールセットにルールを指定する必要があります。 これは該当箇所で説明されています。



ステートメントの中で太字で表示している部分は、リライトされたことを示します。



次のサンプルが使用できます。

フォームのサンプル

このサンプルは次の場所からアクセスできます。

portal server URL/rewriter/HTML/forms/formrule.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていない場合、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

このサンプルで指定されたルールを、default_gateway_Ruleset の「HTML 属性をリライトするためのルール」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_Ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

</head>

<body>

RW_START

<p>

<form name="form1" method="Post" action="http://abc.sesta.com/casestudy/html/form.html">

<input type="hidden" name="name1" value="0|1234|/test.html">

<input type="hidden" name="name3" value="../../html/test.html">

<form name="form2" method="Post" action="http://abc.sesta.com/testcases/html/form.html"><br>

<input type="hidden" name="name1" value="0|1234|../../html/test.html"></form>

RW_END </p>

</body>

</html>

ルール

<Form source="*" name="form1" field="name1" valuePatterns="0|1234|"/>

リライト後の HTML ページ

<HTML>

<HEAD>

RW_START

</HEAD>

<BODY>

<P>

<FORM name=form1 method=POST action="gateway URL://abc.sesta.com/casestudy/html/form.html">

// デフォルトのゲートウェイルールセットの HTML ルールの一部として <Attribute name="action"/> が定義されているため、この URL がリライトされます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞に付ける必要があります。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。

<input type=hidden name=name1 value="0|1234|gateway URL/portal server URL/test.html">

// ここではフォーム名は form1、フィールド名は name1 です。 これはルールに指定されたフォーム名とフィールド名に一致します。 ルールはこのステートメントの value に一致する valuePatterns0|1234| と宣言します。 したがって valuePattern の後の URL がリライトされます。 Portal Server URL ゲートウェイ URL が前に指定されます。 valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

<input type=hidden name=name3 value="../../html/test.html">

//name はルールに指定される field 名に一致しないため、この URL はリライトされません。

</FORM>

<FORM name=form2 method=POST action="gateway URL://abc.sesta.com/casestudy/html/form.html"><BR>

// <Attribute name="action"/> はデフォルトルールセットの HTML ルールの一部として定義されているため、この URL はリライトされます。 この URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞として指定する必要があります。

<input type=hidden name=name1 value="0|1234|../../html/test.html">

// フォーム名がルールに指定される名前に一致しないため、この URL はリライトされません。

</FORM>

</BODY>

RW_END

</HTML>

HTML 属性のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/HTML/attrib/attribrule.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに host1.siroe.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

このサンプルに指定されたルールをデフォルトのゲートウェイルールセットに追加する必要はありません。このルールは「HTML 属性をリライトするためのルール (Rules for Rewriting HTML Attributes)」セクションにすでに定義されています。

リライト前の HTML

<html>

Rewriting starts

<head>

<title>TEST PAGE () </title>

</head>

ID-htmlattr.1

<br><br>

1.a href <a href="http://abc.sesta.com/images/logo.gif">http://..</a>

<br><br>

2 href <a href="https://host1.siroe.com">https://..</a>

<br><br>

3 href <a href="../images/logo.gif">../images/</a>

<br><br>

4 href <a href="images/logo.gif">images/..</a> <br><br>

5 href <a href="../../images/logo.gif">../../images/</a> <br><br>

Rewriting ends

</html>

ルール

<Attribute name="href"/>

リライト後の HTML

<html>

Rewriting starts

<head>

<title>TEST PAGE () </title>

</head>

ID-htmlattr.1

<br><br>

1 a href <a href="gateway URL/http://abc.sesta.com/images/logo.gif">http://..</a> <br>

// <Attrib name="href"/> ルールがすでにデフォルトのゲートウェイルールセットに定義されているため、この URL はリライトされます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞に付けます。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。

2 href <a href="gateway URL/https://host1.siroe.com">https://..</a>

// この場合も、ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに host1.siroe.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。

<br><br>

3 href <a href="gateway URL/portal server URL/rewriter/HTML/images/logo.gif">../images/</a>

// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。 指定されたサンプル構造の HTML ディレクトリに images というディレクトリがないため、このリンクは機能しません。

<br><br>

4 href <a href="gateway URL/portal server URL/rewriter/HTML/attrib/images/logo.gif">images/..</a> <br><br>

// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。

5 href <a href="gateway URL/portal server URL/rewriter/images/logo.gif">../../images/</a> <br><br>

// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。 指定されたサンプル構造の rewriter ディレクトリに images というディレクトリがないため、このリンクは機能しません。

Rewriting ends

</html>

アプレットのサンプル

アプレットコードを参照するページのベース URL は次のとおりです。

portal server URL/rewriter/HTML/applet/rule1.html

RewriteURLinApplet.class ファイルは、次の場所にあります。

portal server URL/rewriter/HTML/applet/appletcode

このサンプルで指定されたルールを、default_gateway_Rulesetの「HTML 属性をリライトするためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML

<html>

Rewriting starts

<br>

<applet codebase=appletcode code=RewriteURLinApplet.class archive=/test>

<param name=Test1 value="/index.html">

<param name=Test2 value="../index.html">

<param name=Test3 value="../../index.html">

</applet>

Rewriting ends

</html>

ルール

<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*" />

リライト後の HTML

<HTML>

Rewriting starts

<BR>

<APPLET codebase=gateway URL/portal server URL/rewriter/HTML/applet/appletcode=RewriteURLinApplet.class archive=/test>

// <Attrib name="codebase"/> ルールがすでにデフォルトのゲートウェイルールセットの一部として存在するため、この URL はリライトされます。 ゲートウェイと Portal Server URL が appletcode ディレクトリのパスの前に接頭辞として指定されます。

<param name=Test1 value="gateway URL/portal server URL/index.html">

// ページのベース URL が rule1.html で、パラメータ名がルールに指定されたパラメータ Test* に一致するため、この URL はリライトされます。 index.html は root レベルに指定されているため、ゲートウェイと Portal Server の URL が直接前に付けられます。

<param name=Test2 value="gateway URL/portal server URL/rewriter/HTML/index.html">

// ページのベース URL が rule1.html 、パラメータ名がルールに指定された パラメータ Test* に一致するため、この URL はリライトされます。 必要に応じてパスが前に付けられます。

<param name=Test3 value="gateway URL/portal server URL/rewriter/index.html">

// ページのベース URL が rule1.html、パラメータ名がルールに指定された パラメータ Test* に一致するため、この URL はリライトされます。 必要に応じてパスが前に付けられます。

</APPLET>

Rewriting ends

</HTML>

HTML JavaScript トークンのサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/HTML/jstokens/JStokens.html

このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従いす。

リライト前の HTML

<html>

<head>

Rewriting starts

<script language="javascript">

function Check(test,ind){

if (ind == 'blur')

{alert("testing onBlur")}

if (ind == 'focus')

{alert("testing onFocus")}

}

</SCRIPT>

</head>

<body>

<form>

<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onChange="Check('/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','blur');return;">

<br><br>

</form>

</body>

Rewriting ends

</html>

ルール

<JSToken>onClick</JSToken>

<Function type="URL" name="Check" paramPatterns="y"/>



<Function type="URL" name="Check" paramPatterns="y"/>はJavaScript関数ルールです。 JavaScript関数のサンプルで詳しく説明しています。



リライト後の HTML

<html>

<head>

Rewriting starts

<script language="javascript">

function Check(test,ind){

if (ind == 'blur')

{alert("testing onBlur")}

if (ind == 'focus')

{alert("testing onFocus")}

}

</SCRIPT>

</head>

<body>

<form>

<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('gateway URL/portal server URL/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('gateway URL/portal server URL/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('gateway URL/portal server URL/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onChange="Check('gateway URL/portal server URL/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway URL/portal server URL/focus.html','blur');return;">

// このサンプルではすべてのステートメントがリライトされます。 それぞれ、ゲートウェイと Portal Server の URL が前に付いています。 これはデフォルトのゲートウェイルールセットに onAbortonBluronFocusonChange、および onClick のルールが定義されているためです。 リライタは JavaScript トークンを検出し、後の処理のために JavaScript 関数ルールに渡します。 サンプルの 2 番目のルールは、リライトするパラメータをリライタに伝えます。

</body>

<br>

Rewriting ends

</html>

JavaScript URL 変数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/variables/url/js_urls.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

このサンプルで指定されたルールを、default_gateway_rulesetの「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

Rewriting starts

<head>

<title>JavaScript Variable test page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//URL Variables

var imgsrc="/tmp/tmp.jpg";

var imgsrc="./tmp/tmp.jpg";

var imgsrc="../tmp/tmp.jpg";

var imgsrc="../../tmp/tmp.jpg";

var imgsrc="http://abc.sesta.com/tmp/tmp.jpg";

var imgsrc="../../../tmp/tmp.jpg";

var imgsrc="tmp/tmp.jpg";

//-->

</SCRIPT>

<br>

Testing JavaScript variables!

<br>

<img src="images/logo.gif">

<br>

Image

</body>

<br>

Rewriting ends

</html>

ルール

<Variable type="URL">imgsrc</Variable>

リライト後の HTML ページ

<html>

Rewriting starts

<head>

<title>JavaScript Variable test page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//URL Variables

var imgsrc="gateway URL/portal server URL/tmp/tmp.jpg";

var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/url/tmp/tmp.jpg";

var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/tmp/tmp.jpg";

var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/tmp/tmp.jpg";

var imgsrc="gateway URL/http://abc.sesta.com/tmp/tmp.jpg";

var imgsrc="gateway URL/portal server URL/rewriter/tmp/tmp.jpg";

var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/url/tmp/tmp.jpg";

// 上記のすべての URL は、ルールで指定された URL タイプ、imgsrc という名前を持つ JavaScript 変数です。 したがってこれらの URL はゲートウェイと Portal Serverの URL の後に付けられます。 必要に応じて、Portal Server URL の後のパスが前に付きます。

//-->

</SCRIPT>

<br>

Testing JavaScript variables!

<br>

<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/url/images/logo.gif">

// 「HTML属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。

<br>

Image

</body>

<br>

Rewriting ends

</html>

JavaScript EXPRESSION 変数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/variables/expr/expr.html

(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

ルールを追加した場合、次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<head>

<title>JavaScript EXPRESSION Variables Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//Expression variables

var expvar1="images";

var expvar2="/logo.gif";

var expvar = expvar1 + expvar2;

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

var expvar="/images/logo"+".gif";

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

//-->

</SCRIPT>

Testing JavaScript EXPRESSION variables

</body>

</html>

ルール

<Variable type="EXPRESSION">expvar</Variable>

リライト後の HTML ページ

<html>

<head>

<title>JavaScript EXPRESSION Variables Test Page</title>

</head>

<body>

<SCRIPT>

// Rewriter appends the wrapper function psSRAPRewriter_convert_expression here

</SCRIPT>

<script LANGUAGE="Javascript">

<!--

//Expression variables

var expvar1="images";

var expvar2="/logo.gif";

var expvar =psSRAPRewriter_convert_expression( expvar1 + expvar2);

// リライタはこのステートメントの右側を JavaScript EXPRESSION 変数と認識します。 リライタはサーバー側でこの式の値を解決することができません。 したがって psSRAPRewriter_convert_expression か数が式の前に付けられます。 式はクライアント側で評価され、必要に応じてリライトされます。

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

// 前のステートメントのリライト後の値 expvar は、この式の値に到達するために使用されます。 結果は有効な URL ( サンプルのこの位置にグラフィックが配置される) であるため、リンクが機能します。

var expvar="gateway URL/portal server URL/images/logo"+".gif";

// リライタは expvar の右側を文字列式として認識します。 これはサーバー側で解決できるため、直接リライトされます。

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

// 前のステートメントのリライト後の値 expvar は、この式の値に到達するために使用されます。 結果は有効な URL ではない (最終的な位置にグラフィックが配置されない) ため、リンクが機能しません。

//-->

</SCRIPT>

Testing JavaScript EXPRESSION variables

</body>

</html>

JavaScript DHTML 変数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/variables/dhtml/dhtml.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

(まだ追加していない場合) このサンプルで指定されたルールを、default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

ルールを追加した場合、次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<head>

<title>JavaScript DHTML Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//DHTML Var

var dhtmlVar="<a href=../../images/test.html>"

var dhtmlVar="<a href=/../images/test.html>"

var dhtmlVar="<a href=/images/test.html>"

var dhtmlVar="<a href=images/test.html>"

var dhtmlVar="<a href=http://abc.sesta.com/images/test.html>"

var dhtmlVar="<img src=http://abc.sesta.com/images/test.html>"

//-->

</SCRIPT>

<br><br>

Testing DHTML Variables

<br><br>

<img src="images/logo.gif">IMAGE

</body>

</html>

ルール

<Variable type="DHTML">dhtmlVar</Variable>

リライト後の HTML ページ

<html>

<head>

<title>JavaScript DHTML Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//DHTML Var

var dhtmlVar="<a href=gateway URL/portal server URL/rewriter/JavaScript/images/test.html>"

// JavaScript DHTML ルールは dhtmlVar の右側をダイナミック HTML コンテンツとして識別します。 このためデフォルトのゲートウェイルールセットの HTML ルールが適用されます。 ダイナミック HTML には href 属性が含まれています。 デフォルトゲートウェイルールセットは、ルール <Attribute name="href"/> を定義します。 したがって href 属性の値がリライトされます。 ただしURL は絶対 URL ではありません。 このため相対 URL はページのベース URL、および必要なサブディレクトリに置き換えられます。 この後、 URL はゲートウェイ URL の後に表示され、最終的なリライト出力が引き出されます。

var dhtmlVar="<a href=gateway URL/portal server URL/../images/test.html>"

// ページのベース URL が追加され、またゲートウェイ URL が前に付いているため、最終的な URL は機能しません。 これは最初の URL /../images/test.html が正確ではないためです。

var dhtmlVar="<a href=gateway URL/portal server URL/images/test.html>"

// ここでも、JavaScript DHTML ルールは右側をダイナミック HTML コンテンツとして識別し、それを HTML ルールに渡します。 デフォルトのゲートウェイルールセットのHTML ルール<Attribute name="href"/> が適用され、ステートメントが次のようにリライトされます。 ゲートウェイ URL と Portal Server URL が前に指定されます。

var dhtmlVar="<a href=gateway URL/portal server URL/rewriter/JavaScript/variables/dhtml/images/test.html>"

var dhtmlVar="<a href=gateway URL/http://abc.sesta.com/images/test.html>"

var dhtmlVar="<img src=gateway URL/http://abc.sesta.com/images/test.html>"

// JavaScript DHTML ルールは右側のダイナミック HTML コンテンツを識別し、ステートメントを HTML ルールに渡します。 デフォルトゲートウェイルールセットの <Attribute name="src"/> ルールが適用されます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞として指定する必要があります。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義され、この URL がリライトされることを確認してください。

//-->

</SCRIPT>

<br><br>

Testing DHTML Variables

<br><br>

<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/dhtml/images/logo.gif">

// 「HTML 属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。

<br><br>

Image

</body>

</html>

JavaScript DJS 変数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/variables/djs/djs.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

(まだ追加していない場合) このサンプルで指定された 2 つのルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従いす。

リライト前の HTML ページ

<html>

<head>

<title>Dynamic JavaScript Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

var dJSVar="var dJSimgsrc='/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='../../../tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp/jpg';"

//-->

</SCRIPT>

<br>

Testing Dynamic JavaScript Variables

<br>

<img src="images/logo.gif">

<br>

Image

</body>

</html>

ルール

<Variable type="DJS">dJSVar</Variable>

<Variable type="URL">dJSimgsrc</Variable>

リライト後の HTML ページ

<html>

<head>

<title>Dynamic JavaScript Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

var dJSVar="var dJSimgsrc='gateway URL/portal server URL/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='gateway URL/portal server URL/rewriter/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='gateway URL/http://abc.sesta.com/tmp/tmp/jpg';"

// 上記のステートメントはすべてゲートウェイ URL と Portal ServerURL を使ってリライトされます。 適宜、必要なパスが前に付けられます。 最初のルールは、 dJSVar の右側をダイナミック JavaScript 変数と識別します。 これは 2 番目のルールに渡され、2 番目のルールが dJSimgsrc の右側をタイプ URL の JavaScript 変数と識別します。 したがってステートメントが次のようにリライトされます。

//-->

</SCRIPT>

<br>

Testing Dynamic JavaScript Variables

<br>

<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/djs/images/logo.gif">

// 「HTML 属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。

<br>

Image

</body>

</html>

JavaScript SYSTEM 変数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/variables/system/system.html

(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<head>

<title>JavaScript SYSTEM Variables Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//SYSTEM Var

alert(window.location.pathname);

//document.write("<A HREF="+window.location.pathname+">SYSTEM</A><P>")

//-->

</SCRIPT>

Testing JavaScript SYSTEM Variables

<br>

This page displays the path where the current page is located when it is loaded.

</body>

</html>

ルール

<Variable type="SYSTEM">window.location.pathname</Variable>

リライト後の HTML

<html>

<head>

<title>JavaScript SYSTEM Variables Test Page</title>

</head>

<body>

<SCRIPT>

<!--

function psSRAPRewriter_convert_pathname(aPSPath)

{

var lPSPath = aPSPath.substr( aPSPath.indexOf( "/",

aPSPath.lastIndexOf("://") + 3 ) );

return lPSPath;

}//psSRAPRewriter_convert_pathname()

//-->

</SCRIPT>

<script LANGUAGE="Javascript">

<!--

//SYSTEM Var

alert(psSRAPRewriter_convert_pathname(window.location.pathname));

// リライタは window.location.pathname を JavaScript の SYSTEM 変数として識別します。 この変数の値はサーバー側で決定することができません。 このため、リライタはこの変数の前に psSRAPRewriter_convert_pathname 関数を付けます。 このラッパー関数は、クライアント側で変数の値を判断し、必要に応じてリライトします。

//-->

</SCRIPT>

Testing JavaScript SYSTEM Variables

<br>

This page displays the path where the current page is located when it is loaded.

</body>

</html>

JavaScript URL 関数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/functions/url/url.html

(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<body>

JavaScript URL Function Test Page

<br>

<script language="JavaScript">

<!--

function test(one,two,three)

{

alert(one + "##" + two + "##" +three);

}

test("/test.html","../test.html","123");

window.open("/index.html","gen",width=500,height=500);

//-->

</SCRIPT>

</body>

</html>

ルール

<Function type="URL" name="test" paramPatterns="y,y"/>

<Function type="URL" name="window.open" paramPatterns="y"/>

リライト後の HTML ページ

<html>

<body>

JavaScript URL Function Test Page

<br>

<script language="JavaScript">

<!--

function test(one,two,three)

{

alert(one + "##" + two + "##" +three);

}

test("/test.html","../test.html","123");

window.open("gateway URL/portal server URL/index.html","gen",width=500,height=500);

//-->

</SCRIPT>

</body>

</html>

JavaScript EXPRESSION 関数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/functions/expr/expr.html

(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<body>

JavaScript EXPRESSION Function Test Page

<br><br><br>

<script language="JavaScript">

<!--

function jstest2()

{

return ".html";

}

function jstest1(one)

{

return one;

}

var dir="/images/test"

var test1=jstest1(dir+"/test"+jstest2());

document.write("<a HREF="+test1+">Test</a>");

alert(test1);

//-->

</SCRIPT>

</body>

</html>

ルール

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>

リライト後の HTML ページ

<html>

<body>

JavaScript EXPRESSION Function Test Page

<br><br><br>

<script>

<!--

// various functions including psSRAPRewriter_convert_expression appear here.

//-->

</SCRIPT>

<script language="JavaScript">

<!--

function jstest2()

{

return ".html";

}

function jstest1(one)

{

return one;

}

var dir="/images/test"

var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2 ()));

// このルールは、関数jstest1のタイプ EXPRESSION の最初のパラメータをリライトする必要があることを指定します。 この式の値は /test/images/test.html です。 これは Portal Server とゲートウェイの URL の後に付けられます。

document.write("<a HREF="+test1+">Test</a>");

alert(test1);

//-->

</SCRIPT>

</body>

</html>

JavaScript DHTML 関数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/functions/dhtml/dhtml.html

(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

<head>

Testing JavaScript DHTML Functions

<br>

<br>

<script>

<!--

document.write('<a href="/index.html">write</a><BR>')

document.writeln('<a href="index.html">writeln</a><BR>')

document.write("http://abc.sesta.com/index.html<BR>")

document.writeln("http://abc.sesta.com/index.html<BR>")

//-->

</SCRIPT>

</head>

<body BGCOLOR=white>

<br><br>

Testing document.write and document.writeln

</body>

</html>

ルール

<Function type="DHTML" name=" document.write" paramPatterns="y"/>

<Function type="DHTML" name=" document.writeln" paramPatterns="y"/>

リライト後の HTML ページ

<html>

<head>

Testing JavaScript DHTML Functions

<br>

<br>

<script>

<!--

document.write('<a href="gateway URL/portal server URL/index.html">write</a><BR>')

// 最初のルールは、DHTML JavaScript 関数 document.write の最初のパラメータをリライトする必要があることを示します。 リライタは最初のパラメータが単なる HTML ステートメントであると識別します。 デフォルトゲートウェイルールセットの HTML ルールセクションには、ステートメントのリライトを指定するルール <Attribute name="href" /> が含まれています。

document.writeln('<a href="gateway URL/portal server URL/rewriter/JavaScript/functions/dhtml/index.html">writeln</a><BR> ')

// 2 番目のルールは、DHTML JavaScript 関数 document.writeln の最初のパラメータをリライトする必要があることを示します。 リライタは最初のパラメータが簡単な HTML のステートメントであると識別します。 デフォルトゲートウェイルールセットの HTMLRules セクションには、ステートメントのリライトを指定するルール<Attribute name="href" /> が含まれています。

document.write("http://abc.sesta.com/index.html<BR>")

document.writeln("http://abc.sesta.com/index.html<BR>")

// DHTML ルールは関数 document.writedocument.writeln を検出しますが、上記のステートメントはリライトされません。 これは最初のパラメータが HTML ではないためです。 パラメータは任意の文字列になり、リライタはこれをどのようにリライトするかを指示されていません。

//-->

</SCRIPT>

</head>

<body BGCOLOR=white>

<br><br>

Testing document.write and document.writeln

</body>

</html>

JavaScript DJS 関数のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/JavaScript/functions/djs/djs.html

ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。

(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML ページ

<html>

Test for JavaScript DJS Functions

<br>

<script>

menu.addItem(new NavBarMenuItem("All Available

Information","JavaScript:top.location='http://abc.sesta.com'"));

//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));

</script>

</html>

ルール

<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/>

<Variable type="URL">top.location</Variable>

リライト後の HTML ページ

<html>

Testing JavaScript DJS Functions

<br>

<script>

menu.addItem(new NavBarMenuItem("All Available Information","javaScript:top.location='gateway URl/http://abc.sesta.com'"));

// abc.sesta.com はゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストのエントリです。 したがってリライタはこの URL をリライトする必要があります。 ただし、これは絶対 URL ではないため、Portal Server の URL を前に付ける必要がありません。 DJS ルールは、DJS 関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定します。 ただし、2 番目のパラメータは関数が今度も JavaScript 変数である場合のパラメータです。 2 番目のルールは、この変数の値をリライトする場合に要求されます。 2番目のルールは、JavaScript 変数 top.location の値をリライトする必要があることを指定します。 これらのすべての条件に適合するため、URL がリライトされます。

//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));

// DJS ルールは、関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定しますが、このステートメントではリライトは行われません。 これはリライタが 2 番目のパラメータを HTML と認識しないためです。

</script>

</html>

XML 属性のサンプル

このサンプルには次の場所からアクセスできます。

portal server URL/rewriter/XML/attrib.html

(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「XML ソースをリライトするためのルール (Rules for Rewriting XML Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。

次のコマンドでゲートウェイを再起動します。

InstallDir/SUNWps/bin/gateway -n profilename start

変更を有効にするには、次の手順に従います。

リライト前の HTML

<html>

RW_START

<body>

<xml>

<baseroot href="/root.html"/>

</xml>

<xml>

<img href="image.html"/>

</xml>

<xml>

<string href="1234|substring.html"/>

</xml>

<xml>

<check href="1234|string.html"/>

</xml>

</body>

RW_END

</html>

ルール

<Attribute name="href" tag="check" valuePatterns="1234|"/>

リライト後の HTML

<html>

Rewriting starts

<br>

<br>

<body>

<xml><baseroot href="/root.html"/></xml>

<xml><img href="image.html"/></xml>

<xml><string href="1234|substring.html"/></xml>

<xml><check href="1234|gateway URL/portal server URL/rewriter/XML/string.html"/></xml>

// このステートメントはルールで指定された条件に一致するため、リライトされます。 attribute namehreftagcheck、および valuePatterns1234 です。 valuePatterns の後の文字列はリライトされます。 valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

</body>

Rewriting ends

</html>


ルールセット DTD

<?xml version="1.0" encoding="UTF-8"?>

<!ENTITY % gtype ユGROUPEDユ>

<!ENTITY % stype ユSCATTEREDユ>

<!ENTITY % jURL ユURLユ>

<!ENTITY % jEXPRESSION ユEXPRESSIONユ>

<!ENTITY % jDHTML ユDHTMLユ>

<!ENTITY % jDJS ユDJSユ>

<!ENTITY % jSYSTEM ユSYSTEMユ>

<!ENTITY % rulesetElements ユ(HTMLRules | JSRules | XMLRules)? ユ>

<!ENTITY % htmlElements ユ(Form | Applet | Attribute | JSToken)*ユ>

<!ENTITY % jsElements ユ(Variable | Function)*ユ>

<!ENTITY % xmlElements ユ(Attribute | TagText)*ユ>

<!ELEMENT ruleset (%rulesetElements;,%rulesetElements;,%rulesetElements;)>

<!ATTLIST ruleset

type (%gtype; | %stype;) "GROUPED"

id ID #REQUIRED

>

<!--

The following constraints are not represented in DTD, but are handled programatically

1. ID should alway be in lower case.

2. In a Rules, all mandatory attributes cannot be "*".

3. Only one instance of the below elements is allowed. They can be in any order.

1)HTMLRules

2)JSRules

3)XMLRules

-->

<!ELEMENT HTMLRules (%htmlElements;)>

<!ATTLIST HTMLRules

type (%gtype; | %stype;) "GROUPED"

id CDATA "html_rules"

>

<!ELEMENT Form EMPTY>

<!ATTLIST Form

source CDATA #REQUIRED

name CDATA #REQUIRED

field CDATA #REQUIRED

valuePatterns CDATA ""

>

<!ELEMENT JSToken (#PCDATA)>

<!ELEMENT Applet EMPTY>

<!ATTLIST Applet

source CDATA #REQUIRED

code CDATA #REQUIRED

param CDATA "*"

valuePatterns CDATA ""

>

<!ELEMENT JSRules (%jsElements;)>

type (%gtype; | %stype;) "GROUPED"

id CDATA "js_rules"

>

<!ELEMENT Variable (#PCDATA)>

<!ATTLIST Variable

type (%jURL; | %jEXPRESSION; | %jDHTML; | %jDJS; | %jSYSTEM;) "URL"

>

<!ELEMENT Function EMPTY>

<!ATTLIST Function

type (%jURL; | %jEXPRESSION; | %jDHTML; | %jDJS;) "URL"

name CDATA #REQUIRED

paramPatterns CDATA #REQUIRED

>

<!ELEMENT XMLRules (%xmlElements;)>

<!ATTLIST XMLRules

type (%gtype; | %stype;) "GROUPED"

id CDATA "xml_rules"

>

<!ELEMENT TagText EMPTY>

<!ATTLIST TagText

tag CDATA #REQUIRED

attributePatterns CDATA ""

>

<!ELEMENT Attribute EMPTY>

<!ATTLIST Attribute

name CDATA #REQUIRED

tag CDATA "*"

valuePatterns CDATA ""

>



* をルールに使用できます。 ただしすべての必須属性に * を指定することはできません。 このようなルールは無視され、エラーメッセージも表示されません。




リライタデバッグ情報の有効化

リライタデバッグを有効にするには、次の手順に従います。

  1. ゲートウェイマシンに root としてログインし、次のファイルを編集します。

    InstallDir/SUNWam/lib/AMConfig.properties

  2. デバッグレベルを設定します。

    com.iplanet.services.debug.level=

    デバッグレベルは次のとおりです。

    error - 重要なエラーのみがデバッグファイルにロギングされます。 このようなエラーが発生すると、通常、リライタは機能を停止します。

    warning - 警告メッセージがロギングされます。

    message - すべてのデバッグメッセージがロギングされます。

    off - デバッグメッセージがロギングされません。

  3. AMConfig.properties ファイルの次のプロパティに、デバッグファイルのディレクトリを指定します。

    com.iplanet.services.debug.directory=/var/opt/SUNWam/debug

    ここで /var/opt/SUNWam/debug はデフォルトのデバッグディレクトリです。

  4. デバッグディレクトリのアクセス権を次のように変更します。

    chmod -fR 777 debug directory

  5. 変更を有効にするためにゲートウェイを再起動します。

    InstallDir/SUNWps/bin/gateway -n profilename start

デバッグファイル

次のデバッグファイルが使用できます。

/var/opt/SUNWam/debug/psSRAPRewriter.profilename

このファイルには、一般的な開発者の情報が収められています。

/var/opt/SUNWam/debug/psSRAPRewriter_errors.profilename

リライタが停止するような重大なエラーのログを収めています。

/var/opt/SUNWam/debug/psSRAPRewriter_warning.profilename

警告メッセージのログを収めています。 これは警告にすぎません。リライタの機能に重大な影響はありません。

/var/opt/SUNWam/debug/psSRAPRewriter_recordPage.profilename

リライトされたページについての情報、すなわちページ URI、ページに適用されたルールセット、リライトされたコンテンツ、およびオリジナルのコンテンツを収めています。 パースに関連した警告メッセージもこのファイルに表示されます。

/var/opt/SUNWam/debug/psSRAPRewriter_recordURI.profilename

リライトされたページの URI に関する情報、すなわちページ URI、オリジナル URI、絶対 URI、ゲートウェイの接頭辞が付いた絶対 URI を収めています。


SP4 のルールのマッピング

次の表は、Sun ONE Portal Server, Secure Remote Access 6.0 のリライタルールと、Sun ONE Portal Server の以前の基礎セットを示しています。


表 5-3    SP4 のルールのマッピング 

リライタ6.0 DTD 要素

リライタ 3.0 リストボックス名

HTML コンテンツのルール

属性  

HTML 属性のリライト  

JSToken  

JavaScript を含む HTML 属性のリライト  

フォーム  

フォーム入力タグリストのリライト  

アプレット  

アプレット/オブジェクトパラメータ値リストのリライト  

JavaScript コンテンツのルール

変数 - URL  

URL の JavaScript 変数のリライト  

変数 - EXPRESSION  

JavaScript 変数関数のリライト  

変数 - DHTML  

HTML の JavaScript 変数のリライト  

変数 - DJS  

JavaScript の JavaScript 変数のリライト  

変数 - SYSTEM  

JavaScript システム変数のリライト  

関数 - URL  

JavaScript 関数パラメータのリライト  

関数 - EXPRESSION  

JavaScript 関数パラメータ関数のリライト  

関数 - DHTML  

HTML の JavaScript 関数パラメータのリライト  

関数 - DJS  

JavaScript の JavaScript 関数パラメータのリライト  

XMLコンテンツのルール

属性  

XML ドキュメントの属性値のリライト  

TagText  

XM1 ドキュメントのテキストデータのリライト  

CSS コンテンツのルール

ルールは必要ありません。 デフォルトでは、すべての URL が変換されます。

WML コンテンツのルール

ルールは定義されていません。 WML は HTML として処理され、HTML ルールが適用されます。

WMLScript コンテンツのルール

WML スクリプトのサポートはありません。


前へ     目次     索引     次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.

最終更新日 2002 年 9 月 26 日