Referenz zum Regelsatz rule-set-reference
Die Bildbereitstellung unterstützt einen einfachen Mechanismus zur Vorverarbeitung von Anfragen, der auf Regeln für Übereinstimmungen und Ersetzungen regulärer Ausdrücke basiert.
Sammlungen von Vorverarbeitungsregeln (Regelsätze) Bildkatalogen oder dem Standardkatalog angehängt werden. Regeln im Standardkatalog gelten nur, wenn die Anfrage keinen bestimmten Hauptbildkatalog identifiziert.
Regeln für die Anfragevorverarbeitung können den Pfad und die Abfrageabschnitte von Anfragen ändern, bevor sie vom Parser des Platform Server verarbeitet werden, einschließlich der Bearbeitung des Pfads, des Hinzufügens von Befehlen, des Änderns von Befehlswerten und des Anwenden von Vorlagen oder Makros. Regeln können auch verwendet werden, um bestimmte Sicherheitsfunktionen zu konfigurieren und zu überschreiben, die normalerweise nur mit Katalogattributen gesteuert werden, z. B. Anfrageverschleierung, Wasserzeichen sowie die Beschränkung des Service auf bestimmte Client-IP-Adressen.
Regelsätze werden als XML-Dokumentdateien gespeichert. Der relative oder absolute Pfad der Regelsatzdatei muss in attribute::RuleSetFile
angegeben werden.
Allgemeine Struktur section-8bcbd91ea8a946f28051bde8ad21827f
<?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>
Die <?xml>
- und <ruleset>
-Elemente sind immer in einer gültigen XML-Regelsatzdatei erforderlich, auch wenn keine tatsächlichen Regeln definiert sind.
Ein <ruleset>
, das eine beliebige Anzahl <rule>
Elemente enthält, ist zulässig.
Beim Inhalt der Vorverarbeitungsregeldateien wird zwischen Groß- und Kleinschreibung unterschieden.
Validierung von Regelsätzen section-d8d101a0b4d74580835e37d128d05567
Eine Kopie von RuleSet.xsd wird im Katalogordner bereitgestellt und sollte verwendet werden, um eine Regelsatzdatei zu validieren, bevor sie in der catalog.ini-Datei registriert wird. Beachten Sie, dass Image Serving eine interne Kopie von RuleSet.xsd zur Validierung verwendet.
URL-Vorverarbeitung section-2c09a2d79ada46b994857c6a7fb4c13a
Vor jeder anderen Verarbeitung wird eine eingehende HTTP-Anfrage teilweise geparst, um zu bestimmen, welcher Bildkatalog angewendet werden soll. Sobald der Katalog identifiziert ist, wird der Regelsatz für den ausgewählten Katalog (oder der Standardkatalog, wenn kein bestimmter Katalog identifiziert wurde) angewendet.
Die <rule>
werden in der Reihenfolge durchsucht, die für eine Übereinstimmung mit dem Inhalt des <expression>
Elements angegeben ist ( expression
).
Bei einer Übereinstimmung mit einer <rule>
wird die optionale substitution
angewendet und die geänderte Anforderungszeichenfolge zur normalen Verarbeitung an den Anforderungs-Parser des Servers übergeben.
Wenn beim Erreichen des <ruleset>
keine erfolgreiche Übereinstimmung erzielt wird, wird die Anfrage ohne Änderung an den Parser übergeben.
Das OnMatch-Attribut section-ed952fa55d99422db0ee68a2b9d395d3
Das Standardverhalten kann mit dem Attribut OnMatch
des <rule>
-Elements geändert werden. OnMatch
kann auf break
(Standard), continue
oder error
festgelegt werden.
Katalogattribute überschreiben section-3f1e33a65c5346d1b4a69958c61432f3
Das rule
-Element kann optional Attribute definieren, die die entsprechenden Katalogattribute überschreiben, wenn die Regel erfolgreich abgeglichen wird. Wenn mehrere übereinstimmende Regeln dasselbe Attribut festlegen, hat die letzte Priorität. Unter Regel-Element finden Sie eine Liste von Attributen, die mit Regeln gesteuert werden können.
Reguläre Ausdrücke section-3f77bb9a265147b38c645f63ab1bad8b
Eine einfache Zeichenfolgenabgleichung funktioniert für sehr einfache Anwendungen, aber in den meisten Fällen sind reguläre Ausdrücke erforderlich. Reguläre Ausdrücke sind zwar dem Industriestandard entsprechend, die spezifische Implementierung variiert jedoch von Instanz zu Instanz.
package java.util.regex beschreibt die spezifische Implementierung regulärer Ausdrücke, die von Image-Serving verwendet wird.
Erfasste Teilzeichenfolgen section-066e659406d5403599cd26ae35e80d68
Um komplexe URL-Änderungen zu erleichtern, können Unterzeichenfolgen im Ausdruck erfasst werden, indem die Unterzeichenfolge in Klammern (…) eingeschlossen wird. Erfasste Teilzeichenfolgen werden entsprechend der Position der führenden Klammer sequenziell mit 1 beginnend nummeriert. Die erfassten Teilzeichenfolgen können in die Ersetzung eingefügt werden, indem $ *
n*
verwendet wird, wobei n
die Sequenznummer der erfassten Teilzeichenfolge ist.
Verwalten von Regelsatzdateien section-0598a608e4044bb4805fe93ceebe10a9
Jedem Bildkatalog kann mit dem Katalogattribut attribute::RuleSetFile
eine Regelsatzdatei angehängt werden. Sie können die Regelsatzdatei zwar jederzeit bearbeiten, der Bildserver erkennt die Änderungen jedoch nur, wenn der zugehörige Bildkatalog neu geladen wird. Dieses Neuladen erfolgt, wenn der Platform-Server gestartet oder neu gestartet wird und wenn die primäre Katalogdatei, die das Dateisuffix ".ini" aufweist, geändert oder „berührt“ wird, um das Dateidatum zu ändern.
Beispiele section-aa769437d967459299b83a4bf34fe924
Beispiel A. Definieren Sie eine Regel, die die Bildqualitätseinstellungen erhöht, wenn der Bildname das Suffix "_hg" aufweist:
<rule>
<expression>(?i)_hg$</expression>
<substitution>\?&qlt=95,1&resmode=bicub</substitution>
</rule>
Der Regelausdruck gibt eine Übereinstimmung (ohne Berücksichtigung der Groß-/Kleinschreibung) von "_hg" am Ende der URL-Zeichenfolge an. Das Suffix wird durch die angegebene Abfragezeichenfolge ersetzt, wodurch die Bildqualitätseinstellungen geändert werden. Beachten Sie, dass das ?
in der Ersatzzeichenfolge maskiert ist, da dies ein Sonderzeichen in regulären Ausdrücken ist.
<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>
Beispiel B Eine bestimmte Web-Anwendung lässt keine Abfragezeichenfolgen zu. Definieren Sie eine Regel, die das nachgestellte Pfadelement small
, medium
oder large
in eine Vorlage übersetzt, wobei der Rest des Pfads als Bildname verwendet wird. myCat/myImage/small
würde beispielsweise in myCat/smallTemplate?src=myCat/myImage
übersetzt werden.
Wir können Teilzeichenfolgen verwenden, um die Anfrage neu zu strukturieren:
<rule>
<expression>([^/]+)/(small|medium|large)$</expression>
<substitution>$2Template?src=sample/$1</substitution>
</rule>