Beispielkonfiguration des Apache

Hausaufgabe QE5, 28.01.03

Im Folgenden möchte ich ein paar Einstellungen der zentralen Konfigurationsdatei des Apache-Webservers, der httpd.conf, näher erläutern, auf der Basis der Erfahrungen, die ich als Webentwickler seit 1999 machen durfte. Eine Garantie für die 100%ige Richtigkeit der Angaben kann ich nicht übernehmen. Ich gehe davon aus, dass alle benötigten Module installiert und in der Konfiguration eingetragen sind.

Start- und Indexseiten festlegen

<IfModule mod_dir.c>
DirectoryIndex index.htm index.html index.shtml index.asp index.php
</IfModule>

DirectoryIndex steht für den Namen der Dateien, die als Start- und Indexseiten in einem Ordner akzeptiert werden. Soll z.B. eine Datei namens start.html als Startseite akzeptiert werden, muss diese hinzugefügt werden. Falls die obigen Zeilen mittels # nur als Kommentar gewertet werden, kann ein Surfer in jedem Ordner browsen, in dem keine index-Datei liegt – er bekommt alle Dateien innerhalb der betreffenden Webpräsenz ebenso frei angezeigt, als würde er mit dem Explorer seine Festplatte durchsuchen (mit Ausnahme des cgi-bin). Dies kann ein Sicherheitsrisiko darstellen oder eine besondere Offenheit des Webmasters.
Falls man keinen Zugriff auf die Apache-Konfiguration hat, sollte man im obersten Verzeichnis der Webpräsenz (falls nicht vorhanden) eine Datei namens .htaccess erstellen und folgende Zeile eintragen:

DirectoryIndex index.php index.html index.shtml

.htaccess

Dies ist eine der wichtigsten Dateien für einen Webmaster, um Zugriffsberechtigungen für jedes Verzeichnis auf dem Webserver zu regeln. Deshalb sollte die Zeile

AccessFileName .htaccess

auf jeden Fall ohne Raute versehen sein.

Jede .htaccess ist für den Ordner zuständig, in dem sie liegt, sowie für alle darunterliegenden Ordner. Enthält ein untergeordneter Ordner allerdings eine eigene .htaccess, bestimmt diese die Zugrifssberechtigungen. Beim Erstellen passwortgeschützter Verzeichnisse kommt eine Datei namens .htpasswd dazu, die Usernamen und verschlüsselte Passwörter enthält. In diesem Fall lautet der Inhalt der .htaccess wie folgt:

AuthType Basic
AuthName "Secured Area"
AuthUserFile /absoluter/UNIX/Pfad/.htpasswd
require valid-user

Mittels der .htaccess kann auch festgelegt werden, welche Fehler-Seiten ein User zu Gesicht bekommt, anstelle des Standards wie z.B. der beliebten 404-Fehler-Seite. Sie stellt also einen wesentlichen Beitrag hinsichtlich der Usability dar:

ErrorDocument 404 /index.html

Diese Zeile sorgt z.B: dafür, dass ein User, der eine nicht mehr oder nicht existierende Seite aufruft, einfach auf die Startseite gelenkt wird. Oder man verweist statt auf index.html auf eine extra-designte Fehlerseite.

PHP zuordnen

<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php-source .phps
</IfModule>

Dies bedeutet, dass alle Dateien mit der Endung .php und .php4 mit PHP4 geparst werden. Wenn bei Debian PHP4 nach PHP3 installiert wird, wird PHP3 automatisch deinstalliert. Aus Sicherheitsgründen sollte PHP3 nicht mehr zum Einsatz kommen. An dieser Stelle sollte man m.E. festlegen können, dass auch HTML-Dateien mit PHP geparst werden – für den Fall, dass man eine bereits bei Suchmaschinen gut registrierte HTML-Seite um PHP-Funktionalitäten erweitern, die Dateiendungen aber nicht ändern will. Folgende Zeile sollte dann eingefügt werden:

AddType application/x-httpd-php .html

Server Side Includes (SSI)

Wer seine Seite um dynamische Elemente erweitern möchte, ohne gleich auf PHP umzusteigen, ist mit SSI bestens beraten. Dynamisch bedeutet, dass die Seite beim Abrufen erst in dieser Form erzeugt wird.
Dafür müssen die Kommentarzeichen bei den folgenden Stellen entfernt werden:

AddType text/html .shtml
AddHandler server-parsed .shtml

Damit SSI auch ausserhalb des cgi-bin ausgeführt werden (was sich unbedingt empfiehlt), sollte auch die vorausgehende Zeile auskommentiert werden:

AddHandler cgi-script .cgi

Sollen auch Dateien mit der Endung .html geparst werden, sollte m.E. folgendes ergänzt werden (dabei ist zu beachten, dass jedes Parsen zusätzliche Serverlast erzeugt):

AddHandler server-parsed .html

Diese Befehlssätze erlauben zum einen, dass Serverinformationen beim Abfragen einer Seite direkt eingebunden werden, wie z.B. das Datum der letzten Änderung oder das aktuelle Tagesdatum:

<!–#echo var="LAST_MODIFIED" –>
<!–#config timefmt="%d.%m.%Y, %H.%M"–>

Noch wertvoller ist die aus SSI resultierende Möglichkeit des modularen Programmierens. Wiederkehrende Elemente auf einer Website werden in eine Extra-Datei ausgelagert und auf jeder Seite, auf der sie auftauchen sollen, per SSI eingebunden. Soll z.B. der Header eingebunden werden, lautet der Befehl in einer Datei:

<!–#include virtual="/inc/header.htm" –>

Dabei empfiehlt es sich, wie in dem Beispiel mit absoluten Pfaden zu arbeiten und alle Includes in einem eigenen Verzeichnis abzulegen. Damit die Seiten entsprechend interpretiert werden, müssen sie auf .shtml enden.

Links:

Selfaktuell/Teamone: Deutsche Übersetzung der httpd.conf
Dr. Web: SSI programmieren
FH-Kiel: Beispiel für Server Side Includes

Kommentar (1) Schreibe einen Kommentar

  1. Hy mahl noch ne Frage ich hab einen Wepspace bei bplaced.ne mit Joomla
    Gut wen ich nun da die htaccess.txt in .htaccess Umschreibe und danach die Option mod_rewrite auf Ja setze bekomme ich eine Fehlermeldung 404. 🙁

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.