BananaJoes SSI


bananapache

BananaJoes SSI

Die Aufgabe der Server Side Includes (SSI) besteht darin, Aktionen auslösende Anweisungen in die Dokumente einzubinden.
Dergleichen kann man zwar auch über CGI Skripte erreichen, doch mittels SSI ist der nötige Aufwand oft wesentlich geringer.
Die Anwendungsmöglichkeiten sind riesig.

Direktiven

Um SSI nutzen zu können, müssen diese Direktiven in der httpd.conf angegeben werden.

AddHandler server-parsed shtml
Options Includes

Dies kann sowohl an der Stelle in der httpd.conf erfolgen, die wie folgt gekennzeichnet ist:

#
# To use server-parsed HTML files
#
AddType text/html .shtml
AddHandler server-parsed shtml
Options Includes

aber auch in unseren virtuellen Servern selber:

<VirtualHost dummy.bananajoe.de>
ServerAdmin webmaster@bananajoe.de
ServerName dummy.bananajoe.de
DocumentRoot C:/Apache/htdocs/bananajoe
ErrorLog C:/Apache/htdocs/bananajoe/logs/error_log
TransferLog C:/Apache/htdocs/bananajoe/logs/access_log
ScriptAlias /cgi-bin/ C:/Apache/cgi-bin/
AddHandler server-parsed shtml
Options Includes
</VirtualHost>

Bei der Verwendung innerhalb der VirtualHost Direktive, funktionieren SSI natürlich auch nur innerhalb dieses virtuellen Hosts (unser virtueller Sever)

Mit AddHandler server-parsed shtml teilen wir dem Webserver mit, dass alle Dateien mit der Endung .shtml durch den SSI-Prozessor geparst werden. Es ist auch jede andere Endung möglich, wie z.B. .ssi oder .banana, aber eher unüblich, da im allgemeinen .shtml als Standard eingerichtet ist.

Options Includes aktiviert die Verarbeitung von SSI's

Damit dies möglich ist muß allerdings noch folgendes in der httpd.conf ergänzt werden:


-----------------------------------------------------------------------
In der httpd.conf, direkt unter der Direktory Direktive, wo wir den Pfad zu unserem htdocs Verzeichnis eingetragen hatten.

<Directory "C:/Apache/htdocs">

#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes FollowSymLinks Includes ExecCGI MultiViews


-------------------------------------------------------------------------


Hiermit ist die Verwendung von SSI's mit dem Apache Webserver fertig eingerichtet.



Aber wie benutzen wir SSI?
Wir geben in dem .shtml Dokument eine spezielle Folge von Strings ein, die der Apache Webserver bei der Rückgabe mit Referenzstrings vergleicht, und durch dynamisch generierte Nachrichten ersetzt.
Diese Strings besitzen ein eigenes Format, damit sie nicht mit anderen Dingen verwechselt werden können.
Die Syntax eines SSI Befehls (des oben angesprochenen Strings) lautet:

<!--#element attribut=wert attribut=wert ... -->

In der folgenden Tabelle sind die einzelnen Elemente mit ihren möglichen Attributen aufgeführt.

Elemente

Element Attribut
config
errmsg Der Wert ist eine Nachricht, die im Fehlerfall angezeigt wird.
sizefmt Legt das Format für die Ausgabe von Dateigrößen fest.
timefmt Legt das Format für die Ausgabe von Datumsangaben fest.
echo
var Name der auszugebenen Variable
exec
cgi Der exec Befehl führt ein CGI aus und fügt das Ergebnis an dieser Stelle wieder ein.
cmd
  Der Server führt den angegebenen String über die Shell aus.
fsize
file Der Wert ist ein Pfad relativ zum Verzeichnis des gerade bearbeiteten Dokuments.
virtual Der Wert ist ein %-codierter URL Pfad relativ zum gerade bearbeiteten Dokument.
flastmod
  Dieser Befehl gibt das Datum der letzten Modifikation der Datei aus.
include
file Der Wert ist ein Pfad relativ zum Verzeichnis des gerade bearbeiteten Dokuments. Er darf weder ../ enthalten noch darf es sich um einen absoluten Pfad handeln.
virtual Der Wert ist ein %-codierter URL Pfad relativ zum gerade bearbeiteten Dokument.

Beispiele

Ein paar Beispiele :

Die Größe einer Datei ausgeben:
Mit dem fsize Befehl kann die Größe einer Datei innerhalb des Dokumentes ausgegeben werden.

<!--#config errmsg="Ein Fehler ist aufgetreten!"-->
<!--#config sizefmt="bytes"-->
Die Datei bananajoe.jpg ist <!--#fsize="bananajoe.jpg"--> groß.

Mittels des Include Befehls kann eine Datei in eine andere eingebettet werden.

<!--#config errmsg="Ein Fehler ist aufgetreten!"-->
Der folgende Text wurde aus der Datei blabla.txt eingebunden:
<< <!--#include virtual="blabla.txt"--> >>

Beispiele als .zip herunterladen.