ルールセットのリファレンス

画像サービングは、正規表現の一致と置き換えルールに基づく、単純な要求前処理メカニズムをサポートします。

一連の前処理ルール (ルールセット) は、画像カタログまたはデフォルトのカタログにアタッチできます。 デフォルトカタログのルールは、リクエストが特定のメイン画像カタログを識別しない場合にのみ適用されます。

リクエストの前処理ルールでは、パスの操作、コマンドの追加、コマンド値の変更、テンプレートやマクロの適用など、Platform Server のパーサーによって処理される前に、リクエストのパスとクエリの部分を変更できます。 また、ルールは、要求の難読化、ウォーターマークなど、通常はカタログ属性でのみ制御される特定のセキュリティ機能を設定および上書きし、特定のクライアント IP アドレスに対するサービスを制限する場合にも使用できます。

ルールセットは、XML ドキュメントファイルとして保存されます。 ルールセットファイルの相対パスまたは絶対パスは、 attribute::RuleSetFile.

一般的な構造

 <?xml version="1.0" encoding="UTF-8"?>
<ruleset>
   <rule>
      <expression>
<varname>
  expression
</varname></expression>
      <substitution>
<varname>
  substitution
</varname></substitution>
      <addressfilter>
<varname>
  addressFilter
</varname></addressfilter>
      <header>
<varname>
  headerValue
</varname></header>
   </rule>
</ruleset>

この <?xml> および <ruleset> 要素は、実際のルールが定義されていない場合でも、常に有効なルールセット XML ファイルで必要です。

1 <ruleset> 任意の数のを含む要素 <rule> 要素を使用できます。

前処理ルールファイルの内容では、大文字と小文字が区別されます。

ルールセットの検証

のコピー RuleSet.xsd は catalog フォルダーに提供され、ruleset ファイルをに登録する前に検証するために使用する必要があります catalog.ini ファイル。 画像サービングでは、 RuleSet.xsd を参照してください。

URL の前処理

他の処理がおこなわれる前に、受信 HTTP リクエストが部分的に解析され、適用する画像カタログが決定されます。 カタログを特定すると、選択したカタログ(特定のカタログが識別されなかった場合はデフォルトのカタログ)のルールセットが適用されます。

この <rule> 要素は、 <expression> 要素 ( expression) をクリックします。

次の場合、 <rule> が一致する場合、オプション substitution が適用され、変更されたリクエスト文字列が通常の処理のためにサーバーのリクエストパーサーに渡されます。

一致が見つからなかった場合、 <ruleset> に達した場合、リクエストは変更されずにパーサーに渡されます。

OnMatch 属性

デフォルトの動作は OnMatch の属性 <rule> 要素。 OnMatch は次のように設定されます。 break (デフォルト)、 continueまたは error.

要素と属性 一致が発生した場合の動作

<rule OnMatch="break">

ルールの処理は、このルールの置換が適用された直後に終了します。 初期設定.

<rule OnMatch="continue">

置き換えが適用され、次のルールで処理が続行されます。

<rule OnMatch="error">

ルール処理は直ちに終了し、「リクエスト拒否」応答ステータスがクライアントに返されます。

カタログ属性の上書き

この rule 要素では、ルールが正しく一致した場合に対応するカタログ属性を上書きする属性をオプションで定義できます。 一致した複数のルールが同じ属性を設定する場合は、最後のルールが優先されます。 詳しくは、 ルール 要素を参照してください。

正規表現

単純な文字列の照合は非常に基本的なアプリケーションで機能しますが、ほとんどのインスタンスでは正規表現が必要です。 正規表現は業界標準ですが、具体的な実装はインスタンスによって異なります。

package java.util.regex は、画像サービングで使用される特定の正規表現の実装について説明します。

取り込まれたサブ文字列

複雑な URL の変更を容易にするために、サブ文字列を括弧 (…) で囲むことで、式にサブ文字列を取り込むことができます。 取り込まれたサブ文字列には、先頭の括弧の位置に従って 1 から順に番号が付けられます。 取得したサブ文字列は、 $ *n*で、 n は、取り込まれた部分文字列のシーケンス番号です。

ルールセットファイルの管理

カタログ属性を使用して、各画像カタログに 1 つのルールセットファイルを添付できます attribute::RuleSetFile. ルールセットファイルはいつでも編集できますが、関連する画像カタログが再読み込みされた場合にのみ、Image Server は変更を認識します。 この再読み込みは、プラットフォームサーバーが起動または再起動されたときや、 .ini ファイルのサフィックス。ファイルの日付を変更するには「touched」を指定します。

例 A. 画像名に「 」というサフィックスが付いている場合に画質設定を増やすルールを定義する _hg":

<rule>
   <expression>(?i)_hg$</expression>
   <substitution>\?&amp;qlt=95,1&amp;resmode=bicub</substitution>
</rule>

ルール式は、「 _hg」と呼ばれ、URL 文字列の末尾に配置されます。 サフィックスは、画質設定を変更する、指定されたクエリ文字列に置き換えられます。 なお、 ? 置換文字列の文字は正規表現の特殊文字なので、エスケープされます。

メモ

アンパサンド文字に必要なエンコーディング。 または、置換文字列を CDATA ブロックで囲むこともできます。

<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>

例 B. 特定の Web アプリケーションでは、クエリ文字列を許可していません。 末尾のパス要素を変換するルールを定義する small, mediumまたは large 残りのパスを画像名として使用して、テンプレートに追加します。 例: myCat/myImage/small 次の値に変換 myCat/smallTemplate?src=myCat/myImage.

サブ文字列を使用して、リクエストを再構築できます。

<rule>
   <expression>([^/]+)/(small|medium|large)$</expression>
   <substitution>$2Template?src=sample/$1</substitution>
</rule>

関連項目

package java.util.regex

このページ