Server Side Includes

SSI Kontrollstrukturen (Apache 2.4)

Apache 2.4 verwendet einen neuen SSI Expression Parser. http://httpd.apache.org/docs/2.4/expr.html

Die Syntax der SSI-Kontrollstruktur lautet für Apache 2.4:

<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

  • Die einzelnen Elemente (#if, #elif, #else, #endif) sind in ihrer Funktion vergleichbar mit if-Anweisungen von Programmiersprachen.
  • expr= ist notwendiger Bestandteil der Syntax.
  • Die Bedingung ("test_condition") wird ausgewertet. Ist das Ergebnis wahr, wird der Text bis zum nächsten #elif-, #else- oder #endif-Element in den Ausgabe-Datenstrom eingebunden bzw. ausgewertet, falls er SSI-Anweisungen enthält.
  • Das #endif-Element ist für die Beendigung einer if-Anweisung notwendig.

Beispiel: eine Verzeigung

Die Syntax der nachfolgenden Ausdrücke (test_condition) gilt für Apache 2.4.
Ausgewertet wird der Wert der SSI-Variablen LINK.

<!--#if expr='v("LINK") == "BIBL" ' -->
    <!--#set var="URL" value="http//www.tu-harburg.de/b/index.html" -->
    <!--#set var="IMAGE" value="bibliothek.gif" -->
<!--#elif expr='v("LINK") == "RZ" ' -->
    <!--#set var="URL" value="http//www.tu-harburg.de/rzt/index.html" -->
    <!--#set var="IMAGE" value="rechenzentrum.gif" -->
<!--#else -->
    <!--#set var="URL" value="http//www.tu-harburg.de/index.html" -->
    <!--#set var="IMAGE" value="tuhh.gif" -->
<!--#endif -->

Beachten Sie, dass die Bedingung (test condition) eine Zeichenkette ist und deshalb in Anführungsstriche (') gesetzt werden muss. Ebenso sind z.B. bei einer Abfrage auf Gleichheit die einzelnen Operanden Zeichenketten und müssen deshalb ebenfalls in Anführungsstriche (") gesetzt werden. v("LINK") ist der Wert der Variablen LINK und eine Zeichenkette.

Unterschiede: Apache 2.2 -- Apache 2.4

In dieser Doku nur ein paar Beispiele:

Apache ReleaseSSI Syntax
2.2 <!--#if expr='"$LinkeSeite" != "NOLEFT"' -->
2.4 <!--#if expr='v("LinkeSeite") != "NOLEFT"' -->
2.2 <!--#if expr="${LinkeSeite}" -->
2.4 <!--#if expr='v("LinkeSeite")!=""' -->
2.2 <!--#if expr="(${REMOTE_ADDR} = /134[.]28[.]200[.]/ )" -->
2.4 <!--#if expr='v("REMOTE_ADDR") -ipmatch "134.28.200."' -->
2.2 <!--#if expr="(${REMOTE_ADDR} = /134[.]28[.]200[.]/ )" -->
2.4 <!--#if expr='-R "134.28.200"' -->

Hinweise zum sehr umfangreichen Thema "Expressions in Apache HTTP Server" finden Sie in der Apache Dokumentation.

Die Direktive SSILegacyExprParser ermöglicht ein Umschalten auf die alte Syntax, die kompatibel ist zu Apache HTTPD Version 2.2.x und früher.