Skip to content

Conditional Rules

Conditional Rules ermöglichen die Anpassung des Verhaltens von smoxy basierend auf umfangreichen Bedingungen wie IP-Adressen, geografischem Standort, Headern, Cookies und mehr. Im Gegensatz zu Rewrite Rules, die beim ersten Treffer stoppen, erlauben Conditional Rules, dass mehrere Regeln auf dieselbe Anfrage angewendet werden – perfekt für komplexe, mehrschichtige Konfigurationen.

Conditional Rules: Verhalten anhand von Bedingungen anpassen.Conditional Rules: Verhalten anhand von Bedingungen anpassen.
Conditional Rules: Verhalten anhand von Bedingungen anpassen.

Was sind Conditional Rules?

Conditional Rules erlauben es, jede smoxy-Konfigurationseinstellung basierend auf leistungsstarker bedingter Logik zu überschreiben. Sie sind ideal für Szenarien, in denen mehrere Konfigurationsänderungen zusammenwirken sollen oder wenn URL-Muster allein nicht ausreichen.

Wichtige Eigenschaften:

  • Werden als drittes (letztes) in der Regelsequenz ausgeführt (nach Access und Rewrite Rules)
  • Umfangreicher Bedingungsabgleich – IP, Land, Header, Cookies, User Agents und mehr
  • Werden in Positionsreihenfolge ausgewertet (1, 2, 3...)
  • Alle passenden Regeln werden angewendet – mehrere Regeln können dieselbe Anfrage modifizieren
  • Optionaler Stoppstop=true setzen, um die weitere Auswertung zu beenden
  • Können jede smoxy-Einstellung aus der Zonen-Konfiguration überschreiben
Der Traffic-Reihenfolge-Drawer: wo Conditional Rules in der Anfrage-Pipeline stehen.Der Traffic-Reihenfolge-Drawer: wo Conditional Rules in der Anfrage-Pipeline stehen.
Der Traffic-Reihenfolge-Drawer: wo Conditional Rules in der Anfrage-Pipeline stehen.

Wie Conditional Rules funktionieren

Conditional Rules werden in aufsteigender Positionsreihenfolge (1 -> 2 -> 3...) für jede eingehende Anfrage ausgewertet. Wenn die Bedingungen einer Regel zutreffen, werden ihre Einstellungen angewendet und die Auswertung fährt fort zur nächsten Regel (außer stop=true).

Positionsbasierte Auswertung

Anfrage aus Deutschland, mobiles Gerät
    |
Conditional Rule (Position 1) -> Treffer (Land = DE)? -> Einstellungen anwenden -> FORTFAHREN
    |
Conditional Rule (Position 2) -> Treffer (Mobil)? -> Einstellungen anwenden -> FORTFAHREN
    |
Conditional Rule (Position 3) -> Treffer (URI = /api)? -> Kein Treffer -> Überspringen
    |
Antwort (mit Einstellungen aus Regel 1 UND Regel 2)

Wichtig: Im Gegensatz zu Rewrite Rules stoppen Conditional Rules nicht automatisch nach dem ersten Treffer. Alle passenden Regeln wenden ihre Einstellungen an, außer eine Regel hat stop=true.

Bedingungen & Ausdrücke

Conditional Rules verwenden einen umfangreichen Bedingungs-Builder, mit dem sich Anfragen basierend auf verschiedenen Eigenschaften abgleichen lassen, darunter:

  • URI: Anfragepfad
  • Host: Domain-Name
  • IP: Client-IP-Adresse oder IP-Bereiche
  • Country: ISO 3166-1 alpha-2 Ländercode
  • City: Stadt des Clients
  • Subdivisions: Bundesland/Region
  • Is European: Boolean – true wenn Anfrage aus der EU kommt
  • Method: HTTP-Methode (GET, POST, PUT, DELETE usw.)
  • User Agent: Browser- oder Client-Kennung
  • Referer: URL der verweisenden Seite
  • Accept Language: Bevorzugte Sprache des Clients
  • Cookie: Bestimmter Cookie-Wert
  • Arg: Query-Parameter-Wert
  • Header: Beliebiger HTTP-Header-Wert
  • Cache-Control: Cache-Control-Header-Direktiven

Operatoren

  • Gleich: Wert stimmt exakt überein
  • Ungleich: Wert stimmt nicht überein
  • Ist in: Wert ist in einer Werteliste enthalten
  • Ist nicht in: Wert ist nicht in einer Werteliste enthalten
  • Ist in CIDR: Client-IP liegt innerhalb eines CIDR-Bereichs oder entspricht einer einzelnen IP-Adresse (nur IP-Feld)
  • Ist nicht in CIDR: Client-IP liegt außerhalb eines CIDR-Bereichs bzw. entspricht nicht der einzelnen IP-Adresse (nur IP-Feld)
  • Ist in Liste: Client-IP ist in einer referenzierten IP-Liste (nur IP-Feld)
  • Ist nicht in Liste: Client-IP ist nicht in einer referenzierten IP-Liste (nur IP-Feld)
  • Entspricht: Entspricht einem Regex-Muster
  • Enthält: Enthält einen Teilstring
  • Enthält nicht: Enthält keinen Teilstring
  • Vorhanden: Feld existiert (unabhängig vom Wert)
  • Nicht vorhanden: Feld existiert nicht

Das IP-Feld bietet die CIDR- und Listen-Operatoren (Ist in CIDR / Ist nicht in CIDR, Ist in Liste / Ist nicht in Liste) anstelle der generischen Ist in / Ist nicht in. Die CIDR-Operatoren akzeptieren sowohl CIDR-Bereiche (203.0.113.0/24) als auch einzelne IPv4-/IPv6-Adressen (203.0.113.45); eine einzelne Adresse trifft genau auf diese Adresse zu.

UND/ODER-Logik

Mehrere Bedingungen lassen sich mit UND/ODER-Operatoren kombinieren, um ausgefeilte Regeln zu erstellen:

(Land = "DE" ODER Land = "AT" ODER Land = "CH")
UND
URI beginnt mit /checkout
Das Formular „Conditional Rule erstellen“ mit dem Bedingungs-Builder im Tab „Bedingungen“.Das Formular „Conditional Rule erstellen“ mit dem Bedingungs-Builder im Tab „Bedingungen“.
Das Formular „Conditional Rule erstellen“ mit dem Bedingungs-Builder im Tab „Bedingungen“.

Stop-Verhalten

Die Stop-Option steuert, ob die Auswertung nach einem Regeltreffer fortgesetzt wird (Access Rules besitzen mit dem Stop-Modus ein Äquivalent).

Wie Stop funktioniert

Wenn stop=false (Standard):

  • Einstellungen der Regel werden angewendet
  • Auswertung fährt mit der nächsten Conditional Rule fort
  • Mehrere Regeln können dieselbe Anfrage modifizieren

Wenn stop=true:

  • Einstellungen der Regel werden angewendet
  • Alle nachfolgenden Conditional Rules werden übersprungen
  • Andere Regeltypen (Access, Rewrite) sind nicht betroffen

Wann Stop zu verwenden ist

stop=true einsetzen, wenn:

  • Eine Regel endgültig sein soll und keine weiteren Änderungen nötig sind
  • widersprüchliche Einstellungen von anderen Regeln verhindert werden sollen
  • ein Wartungsmodus oder ähnliche Override-Szenarien implementiert werden

Beispiel:

Position 1: WENN (Wartungsmodus-Cookie) DANN (Wartungsseite anzeigen) STOPP
Position 2: WENN (Büro-IP) DANN (Auth deaktivieren) [wird während Wartung nie ausgewertet]
Position 3: WENN (Mobil) DANN (optimieren) [wird während Wartung nie ausgewertet]

Wann Conditional Rules verwenden

Conditional Rules verwenden wenn:

  • komplexe Bedingungen benötigt werden (IPs, Länder, Header, Cookies usw.)
  • mehrere Regeln auf dieselbe Anfrage angewendet werden sollen
  • erweiterte UND/ODER-Logik mit mehreren Bedingungen benötigt wird
  • URL-Muster allein nicht ausreichen
  • Verschiedene Bedingungen unterschiedliche Konfigurationen erfordern, die sich stapeln sollen

Stattdessen Rewrite Rules verwenden wenn:

  • nur eine URL umgeschrieben oder normalisiert werden soll, ohne die Konfiguration zu ändern
  • die Änderung sich nur mit URL-Mustern ausdrücken lässt
  • die Transformation früher erfolgen soll, bevor Conditional Rules ausgewertet werden

Einstellungen: Jede Konfiguration überschreiben

Conditional Rules können jede Einstellung aus der Konfiguration der Zone überschreiben. Dazu gehören:

  • Routing: Verschiedene Origins oder Load Balancer auswählen
  • Caching: Cache-TTL, Cache-Keys, Cache-Tags steuern, Cache umgehen
  • Bildoptimierung: AVIF, WebP, JPEG, PNG Qualitätsstufen
  • Sicherheit: WAF, Basic Auth, benutzerdefinierte Fehlerseiten aktivieren/deaktivieren
  • Header: Request/Response-Header hinzufügen, ändern oder entfernen
  • Optimierung: HTML-Minifizierung
  • Erweitert: Wartungsmodus, Debug-Header

Beim Erstellen oder Bearbeiten einer Conditional Rule einfach die zu überschreibenden Einstellungen auswählen. Die verfügbaren Einstellungen sind nach Kategorie im smoxy Dashboard gruppiert.

Der Tab „Einstellungen“: Auswahl der Zoneneinstellungen, die diese Regel überschreibt.Der Tab „Einstellungen“: Auswahl der Zoneneinstellungen, die diese Regel überschreibt.
Der Tab „Einstellungen“: Auswahl der Zoneneinstellungen, die diese Regel überschreibt.

Anwendungsfälle & Beispiele

Beispiel 1: Geografische Inhaltsoptimierung

Szenario: Höhere Bildqualität für Nutzer in kaufkräftigen Märkten, Standardqualität für andere.

Position: 1
Bedingung: Land in ["US", "GB", "DE", "CH", "AU"]
Einstellungen:
- JPEG-Qualität: 85
- WebP-Qualität: 85

Position: 2
Bedingung: Land in ["IN", "BR", "MX"]
Einstellungen:
- JPEG-Qualität: 70
- WebP-Qualität: 70

Ergebnis: Beide Regeln können angewendet werden (wenn Bedingungen zutreffen), US-Nutzer bekommen höhere Qualität

Warum Conditional Rules? Land lässt sich nicht allein mit URL-Mustern abgleichen – für geografisches Targeting werden die umfangreichen Bedingungen der Conditional Rules benötigt.

Beispiel 2: Basic Auth für Büro-IPs deaktivieren

Szenario: Die Zone verwendet Basic Authentication, aber das Team soll sich vom Büro aus nicht einloggen müssen.

Position: 1
Bedingung: IP in [203.0.113.0/24, 198.51.100.50]
Einstellungen:
- Basic Authentication: Deaktiviert

Position: 2
Bedingung: URI beginnt mit "/admin"
Einstellungen:
- Basic Authentication: Aktiviert
- Basic Auth Benutzer: admin_users

Ergebnis: Büro umgeht Auth (Regel 1), aber Auth ist für den Admin-Bereich weiterhin aktiviert (Regel 2)

Warum nicht Access Rules? Access Rules sind zum Blockieren/Herausfordern/Whitelisten, nicht zum Umschalten von Features wie Basic Auth.

Beispiel 3: Mobil-optimierte Bilder

Szenario: Mobile Nutzer sollen aggressivere Bildoptimierung bekommen, um Bandbreite zu sparen.

Position: 1
Bedingung: User Agent matches "(Mobile|Android|iPhone|iPad)"
Einstellungen:
- JPEG-Qualität: 75
- PNG-Qualität: 80
- WebP-Qualität: 75
- Bild Max-Breite: 1200px

Position: 2
Bedingung: Land = "IN" UND User Agent matches "(Mobile|Android)"
Einstellungen:
- JPEG-Qualität: 65
- WebP-Qualität: 65

Ergebnis: Mobile Nutzer bekommen optimierte Bilder, mobile Nutzer in Indien bekommen Extra-Optimierung

Warum mehrere Regeln? Beide Regeln können angewendet werden – Regel 1 setzt die Basis-Mobiloptimierung, Regel 2 fügt Extra-Optimierung für bestimmte Märkte hinzu.

Conditional Rules vs Rewrite Rules

Die wichtigsten Unterschiede:

FeatureRewrite RulesConditional Rules
AbgleichNur URL-MusterUmfangreiche Bedingungen (IP, Land, Header usw.)
AusführungErster Treffer gewinnt, stopptAlle passenden Regeln werden angewendet
Stop-OptionNein (stoppt immer bei Treffer)Ja (optional)
Position2. in der Sequenz3. (letzte) in der Sequenz
ZweckDie Anfrage-URL umschreibenJede Zoneneinstellung überschreiben

Lassen sich beide verwenden? Absolut! Sie ergänzen sich:

Rewrite Rule: ^/legacy/(.*)$ -> /$1 (URL normalisieren)
Conditional Rule: User-Agent = "mobile" -> Mobile Optimierungen aktivieren
-> Die URL wird zuerst umgeschrieben, dann werden Conditional Rules auf die umgeschriebene Anfrage angewendet

Für das vollständige Bild, wie die Regeltypen in Reihenfolge ausgewertet werden, siehe Ausführung & Reihenfolge.

Best Practices für die Regelreihenfolge

1. Kritische Regeln zuerst

Regeln, die immer Vorrang haben sollen, auf niedrigeren Positionen platzieren:

Position 1: Wartungsmodus (mit stop=true)
Position 2-5: Geschäftslogik-Regeln
Position 6+: Optimierungsregeln

2. Stop strategisch einsetzen

Position 1: WENN (Notfallmodus) DANN (minimale Features) STOPP
Position 2+: Normale Betriebsregeln (werden im Notfall übersprungen)

3. Komplementäre Regeln schichten

Da alle passenden Regeln angewendet werden, lassen sich mehrschichtige Konfigurationen aufbauen:

Position 1: WENN (Land = "DE") DANN (DSGVO-konforme Header)
Position 2: WENN (Mobil) DANN (Mobile Optimierungen)
Position 3: WENN (URI = /checkout) DANN (Hohe Sicherheit)
-> Deutscher mobiler Checkout bekommt alle drei!

4. Widersprüchliche Einstellungen vermeiden

Wenn mehrere Regeln denselben Konfigurationsschlüssel setzen, gewinnt die letzte passende Regel:

Position 1: WENN (Land = "US") DANN (Cache TTL = 3600)
Position 2: WENN (URI = /api) DANN (Cache TTL = 60)
-> US-Anfragen an /api bekommen TTL = 60 (letzter Treffer gewinnt)

IP-Listen verwenden

Statt IPs in jeder Regel fest zu codieren, lassen sich wiederverwendbare IP-Listen in den Kontoeinstellungen erstellen:

  1. Eine IP-Liste namens "office_ips" mit den Büro-IP-Bereichen erstellen
  2. In den Conditional-Rule-Bedingungen referenzieren

Vorteil: Die IP-Liste wird einmal aktualisiert, und alle Regeln, die sie verwenden, werden automatisch auf allen Zonen aktualisiert.

Eindeutigkeit

Jede Zone kann nur eine Conditional Rule pro eindeutigem Ausdruck haben. Beim Versuch, ein Duplikat zu erstellen, erscheint: "Die Regel für diesen Ausdruck existiert bereits."

Das verhindert doppelte Regeln und hält die Konfiguration übersichtlich.

Häufige Fehler

Vergessen, dass Regeln sich stapeln

Position 1: WENN (URI = /api) DANN (Cache = deaktiviert)
Position 2: WENN (URI = /api/*) DANN (Cache = aktiviert & Cache TTL = 3600)
-> Beide werden angewendet, letzte gewinnt: Cache = aktiviert mit TTL 3600

Interaktionen beachten

stop=true verwenden oder bei Bedarf in eine Regel zusammenfassen

Stop zu früh verwenden

Position 1: WENN (Land = "US") DANN (Einstellungen) STOPP
Position 2: WENN (Mobil) DANN (Mobile Einstellungen) [gilt nie für US-Mobilnutzer]

Stop nur wenn nötig

stop=true nur setzen, wenn die Auswertung wirklich beendet werden muss

Widersprüchliche Einstellungen aus mehreren Regeln

Position 1: WENN (Mobil) DANN (Bildqualität = 80)
Position 2: WENN (Land = "US") DANN (Bildqualität = 90)
-> US-Mobilnutzer bekommen Qualität = 90 (letzter Treffer gewinnt)

Für überlappende Bedingungen planen

Entweder Stop einsetzen, Positionen anpassen oder Letzter-Treffer-gewinnt-Verhalten akzeptieren

Conditional Rules testen

  1. Debug-Header aktivieren in der Zonen-Konfiguration
  2. Testanfragen mit verschiedenen Bedingungen durchführen (IPs, User Agents usw.)
  3. Response-Header prüfen um zu sehen, welche Conditional Rules zutrafen
  4. Verifizieren, dass die Einstellungen in der erwarteten Reihenfolge angewendet werden
  5. Überlappende Bedingungen testen um sicherzustellen, dass das Letzter-Treffer-gewinnt-Verhalten akzeptabel ist