ルールセットの参照

画像サービングでは、正規式の一致と置換ルールに基づく単純な要求前処理メカニズムがサポートされています。

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

リクエストの事前処理ルールでは、パスの操作、コマンドの追加、コマンド値の変更、テンプレートやマクロの適用など、リクエストが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ファイルでは、実際のルールが定義されていない場合でも、<?xml>要素と<ruleset>要素は必ず必要です。

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

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

ルールセットの検証

RuleSet.xsdのコピーがカタログフォルダーに提供され、catalog.iniファイルに登録する前に、ルールセットファイルの検証に使用する必要があります。 画像サービングでは、検証にRuleSet.xsdの内部コピーが使用されます。

URLの前処理

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

<rule>要素は、<expression>要素(expression)の内容と一致するように指定された順に検索されます。

<rule>が一致した場合は、オプションの​substitution​が適用され、変更された要求文字列がサーバーの要求パーサーに渡され、通常の処理が行われます。

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

OnMatch属性

デフォルトの動作は、<rule>要素のOnMatch属性を使用して変更できます。 OnMatch は、 break (デフォルト)、 continueまたはに設定でき errorます。

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

<rule OnMatch="break">

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

<rule OnMatch="continue">

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

<rule OnMatch="error">

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

カタログ属性の上書き

<rule> 要素では、ルールが適切に一致した場合に、対応するカタログ属性を上書きする属性を任意で定義できます。一致する複数のルールで同じ属性が設定されている場合は、最後のルールが使用されます。 ルールで制御できる属性のリストについては、 [<rule>](../../../../../is-api/image-catalog/image-serving-api-ref/c-image-catalog-reference/c-rule-set-reference/r-rule-rule.md#reference-af76c0e2b8be48dabb52b71fe7e51ee9)要素の説明を参照してください。

正規式

単純な文字列の一致は非常に基本的なアプリケーションで機能しますが、通常の式は必須です。 正規式は業界標準ですが、具体的な実装はインスタンスによって異なります。

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

捕捉したサブ文字列

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

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

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

例A.画像名に「 _hg」というサフィックスが付いている場合に画質設定を上げるルールを定義します。

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

ルール式では、URL文字列の末尾に「_hg」という大文字と小文字を区別しない一致を指定します。 サフィックスは、指定したクエリ文字列に置き換えられ、画質の設定が変更されます。 置換文字列の?文字は、正規式の特殊文字であるため、エスケープされます。

メモ

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

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

例B. 特定のWebアプリケーションでは、クエリ文字列を使用できません。末尾のパス要素smallmediumまたはlargeをテンプレートに変換するルールを定義し、残りのパスを画像名として使用します。 例えば、myCat/myImage/smallmyCat/smallTemplate?src=myCat/myImageに変換されます。

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

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

関連項目

パッケージjava.util.regex

このページ