Apache-Konfiguration
Der Apache HTTP Server ist ein Webserver von der Apache Software Foundation (kurz ASF) und zählt zu den verbreitetsten Webservern. Jedoch hat im Laufe der letzten Jahre die Verwendung des Microsoft Internet Information Services (IIS) sowie die Verwendung anderer Webserver zugenommen. Falls Sie ein „normales“ bzw. durchschnittliches Hosting-Angebot nutzen, werden Sie jedoch mit sehr hoher Wahrscheinlichkeit Apache als Webserver haben. Apache ist plattformunabhängig und unter anderem auch im Software-Paket XAMPP enthalten.
In diesem Thema wollen wir uns damit beschäftigen wie man den Apache-Webserver konfigurieren kann. Eine der wichtigsten
Konfigurationsdateien hierfür ist die Datei .htaccess
. Die Datei .htaccess
darf in jedem Verzeichnis
vorkommen. Alle „Regeln“ die dort definiert sind, gelten dann für das Verzeichnis, in welchem die Datei hinterlegt ist inkl.
allen Unterverzeichnissen.
Fehlerdokumente
In der .htaccess
-Datei können Sie individuelle Fehlerdokumente festlegen. Diese Fehlerdokumente werden aufgerufen,
wenn eine HTTP-Antwort mit dem Statuscode 4xx oder 5xx beantwortet werden würde. Beliebt ist dieses Verfahren vor allem
für den Statuscode 404, welcher auf das Fehlen eines Verzeichnisses oder einer Datei hinweist, für den Statuscode 403,
welcher bei einer Zugriffsverweigerung auftritt, oder für den Statuscode 500, welcher auf einen (allgemeinen) internen
Serverfehler hinweist. Ein Eintrag für ein solches Fehlerdokument besteht aus dem Schlüsselwort ErrorDocument
,
dem Statuscode und dem Pfad zum Fehlerdokument. Wird ein absoluter Pfad (z. B. http://www.example.com/error-404.html
)
angegeben, so erfolgt eine Umleitung. Bei der Angabe eines relativen Pfads (dazu zählt auch eine Pfadangabe mit Bezug auf
das Wurzelverzeichnis, z. B. /error-404.html
) erfolgt keine Umleitung, es wird stattdessen einfach der Inhalt der
angegebenen Fehlerseite an den Browser gesendet.
ErrorDocument 403 /zugriff-verweigert.html ErrorDocument 404 /nicht-gefunden.html ErrorDocument 500 /server-fehler.html
Übrigens: Wenn Sie statt einer Fehlerseite lediglich einen Text anzeigen möchten, dann können Sie auch einfach den anzuzeigenden Text (anzugeben in doppelten Anführungszeichen) notieren:
ErrorDocument 404 "Die Seite wurde nicht gefunden!"
MIME-Typen
Der Apache-Webserver enthält natürlich bereits eine lange Liste an Zuordnungen von MIME-Typen (z. B. text/html
)
zu Dateierweiterungen (z. B. .html
). Manchmal kann es jedoch notwendig sein, eine solche Zuordnung manuell
hinzuzufügen. Hierfür notieren Sie das Schlüsselwort AddType
, gefolgt von dem MIME-Typ und der Angabe von
einer oder mehreren Dateierweiterung(en).
AddType text/plain .txt AddType text/html .html .htm
Zugriffseinstellungen
Im Apache-Webserver können Sie Zugriffseinstellungen setzen, d. h. Sie können den externen Zugriff (Zugriff per HTTP, i. d. R.
per Webbrowser) auf bestimmte Dateien und Ordner verbieten. Wird trotzdem auf eine Datei oder einen Ordner zugegriffen, auf
welchen der Zugriff verweigert ist, so wird ein 403-Fehler ausgelöst. Die wichtigsten Schlüsselwörter hierbei sind
allow
(Zugriff erlauben) und deny
(Zugriff verbieten). Bevor wir jedoch die Zugriffseinstellungen
setzen, müssen wir die Reihenfolge festlegen. Dafür dient das Schlüsselwort order
. Mögliche Angaben
sind daher also order allow,deny
(erst erlauben, dann verbieten) und order deny,allow
(erst verbieten,
dann erlauben). Um eine Zugriffsregel zu definieren, benötigen Sie das Schlüsselwort allow
oder deny
,
gefolgt vom Schlüsselwort from
und einer IP-Adresse, einem DNS-Namen oder dem Schlüsselwort all
(für alle). Die IP-Adressen und DNS-Namen können dabei auch abgekürzt werden. Hierzu ein Beispiel, bei welchem der Zugriff nur
für die IP-Adressen 123.234.x.x
und den DNS-Namen *.example.com
erlaubt sind:
order deny,allow deny from all allow from 123.234. allow from .example.com
Möchten Sie den Zugriff für alle Adressen verbieten, so kann Ihnen folgender Code helfen:
order allow,deny deny from all
Natürlich können Sie den Zugriff auch mit der FilesMatch
-Direktive kombinieren, um somit Zugriffseinstellungen
z. B. nur für Dateien mit der Dateierweiterung .php
anzuwenden:
<FilesMatch "\.(php)$"> order allow,deny deny from all </FilesMatch>
HTTPS-Weiterleitung
Eine oft gesuchte Konfiguration ist die Umleitung von HTTP auf HTTPS. Meist wird diese Einstellung nicht in der
.htaccess
-Datei, sondern eher in der Datei httpd.conf
oder httpd-vhosts.conf
gesetzt. Um
eine solche Umleitung durchzuführen, benötigen Sie das Rewrite-Modul, mit welchem komplexe Regeln aufgestellt werden können.
Die Konfiguration zur Umleitung von HTTP auf HTTPS sieht wie folgt aus:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Verzeichnisauflistung
Im Regelfall ist es nicht erwünscht, dass man den Inhalt eines Verzeichnisses über den Browser einsehen kann (das
sogenannte directory listing, zu Deutsch Verzeichnisauflistung), sofern der Ordner über keine Verzeichnisindex-Datei
(zumeist index.htm
, index.html
oder index.php
) verfügt. Ist die Verzeichnisauflistung
deaktiviert und keine Verzeichnisindex-Datei vorhanden, so wird ein 403-Fehler (Zugriff verweigert) ausgelöst. Die Einstellung
für die Verzeichnisauflistung kann mit der Option +Indexes
(Auflistung aktivieren) und -Indexes
(Auflistung deaktivieren) gesetzt werden.
Options -Indexes