blattertech informatikLukas BlatterNiederlenzerstrasse 21
5600 Lenzburg/AGSwitzerland

079 569 25 90
https://www.blattertech.ch

Adresse anzeigen

.htaccess

1. Was ist .htaccess?

Durch die Verwendung von .htaccess kann man die Vorgaben, die auf dem Server konfiguriert sind, ändern. Dadurch kann man z.B. eine eigene Error-Seite verwenden, Aussehen der Verzeichnislistings verändern oder eine andere Dateiendung als SSI betrachten zu lassen.
Die Datei in der die Änderungen stehen, heisst normalerweise .htaccess. Dieses Verfahren ist vor allem dazu gedacht, dass Benutzer Vorgaben für ihr 'public_html'-Verzeichnis ändern können. Die .htacces Datei im 'public_html' Verzeichnis ändert die Einstellungen für die gesamte Homepage. Durch .htaccess Dateien in den Unterverzeichnissen werden ihre Funtionen wieder ausser Kraft gesetzt.

2. Die Verwendung von .htaccess zum Passwortschutz eines Verzeichnisses

Der Apache Webserver besitzt eine zentrale Konfigurationsdatei (acess.conf), in welcher die Eigenschaften, Dienste, Zugriffsrechte usw. des Webserver zentral beschrieben sind. Bei mehreren Benutzern mit unterschiedlichen Einstellungen kann der Server zusätzlich auch dezentral konfiguriert werden. Diese Einstellungen werden bei allen kompatiblen NCSA (National Center for Supercomputing Applications) Webservern in einer Textdatei mit dem Namen .htaccess gemacht.

Nach der Grundeinstellung (default) des Apache Servers sind alle http-Verzeichnisse für jedermann mit Leseberechtigung zugänglich. Damit die ganze Homepage oder Teile davon geschätzt werden können, braucht es eine .htaccess Datei. Die .htaccess Datei spezifiziert nur den Umfang des Schutzes, die Passwöter selbst sind in dieser Datei nicht enthalten. Diese sind in einer separaten Datei mit dem Namen htpasswd gespeichert. Die .htaccess Datei kann noch weitere Konfigurationsdaten beinhalten, diese können Sie weiter unten auf der Seite nachlesen.

Es braucht insgesamt 4 Linien in der .htaccess Datei für die Erstellung eines Passwort Schutzes. Die Daten, die Sie angleichen müssen, sind blau markiert:

2.1 Beispiel einer .htaccess Datei

AuthName "Geheimbereich"
AuthType Basic
AuthUserFile /home/blattertech/html_auth/.htpasswd
require valid-user

AuthType Basic ist das Schutzverfahren. Es ist nur Basic ist möglich. AuthName "Geheimbereich" definiert den Namen des Geheimbereichs. AuthUserFile definiert den Pfad zur .htpasswd Datei. Er muss immer vom Homedir, meistens /home/ her definiert sein. require valid-user fordert einen gültigen Benutzer.

Tipps:

  • Die .htaccess Datei schützt ohne weitere Angaben alle Seiten des entsprechenden Verzeichnisses und dessen Unterverzeichnisse.
  • Die htpasswd Datei sollte sich nicht im gleichen Verzeichnis wie die .htaccess Datei befinden. Wenn möglich sollte sie in einem dem Internet nicht zugänglichen Ordner abgelegt werden, z.B. dem Homedir, oder falls vorhanden, im html_auth Ordner.
  • Es kann sein, dass die htpasswd Datei auch "users" heissen muss. Da fragen Sie am besten bei Ihrem Hostingprovider nach.

Wenn ein Besucher die URL des geschützen Bereichs anzusprechen versucht, sendet der Webserver zunächst eine Aufforderung zur Authentifizierung an den Client. Der Browser zeigt dann dem Besucher eine Dialogbox mit Eingabefeldern für die Benutzererkennung und das Kennwort an, in der auch die Beschreibung des geschützten Bereichs angezeigt wird. So weiss der Besucher für was er sich gerade ausweisen soll. Weist sich der Besucher gemäss der definierten Berechtigung korrekt aus, dann darf er auf das Dokument zugreifen, anderenfalls löst der Webserver einen HTTP-Fehler 403 aus.

2.2 .htaccess Datei erzeugen:


3. Die htpasswd Datei erstellen

Das Format dieser Datei ist sehr einfach aufgebaut. Es besteht aus einer Serie von Benutzernamen und Passwörter. Jede Zeile enthält einen Benutzernamen und ein dazugehöriges Passwort. Die beiden Wörter werden mit einem Doppelpunkt getrennt. Die .htpasswd Datei enhält aus Sicherheitsgründen nur das codierte Passwort. Das Passwort wird NIE im Klartext angezeigt. Die Verschlüsselung wird mit der Unix Systemroutine crypt() ausgeführt.

3.1 Beispiel einer htpasswd Datei

martin:YlfYyU1.N0Tpc
mirjam:grXgv9Sj880ss
webmaster:lIPnZv3usHD6E

Die Datei htpasswd sollte im ASCII modus übertragen werden, damit es keine Probleme mit dem Lesen der Daten gibt.

3.2 Benutzernamen und Passwort für htpasswd erzeugen


4. Die Verwendung von .htaccess zum Passwortschutz einer Datei

Möglicherweise möchten Sie nur eine einzige Datei in einem Verzeichnis schützen. Um dies zu tun, erstellen Sie wiederum eine .htaccess Datei im gleichen Verzeichnis wie die zu schützende Datei.

4.1 Beispiel einer Datei zum Schutz der Datei beispiel.php

Die Daten, die Sie angleichen müssen, sind blau markiert:

AuthType Basic
AuthName "Geheimbreich"
AuthUserFile /home/blattertech/html_auth/.htpasswd
require valid-user
Allow From All
<Files beispiel.php>
Deny From All
</Files>

AuthType Basic ist das Schutzverfahren. Es ist nur Basic möglich. AuthName "Geheimbereich" definiert den Namen des Geheimbereichs. AuthUserFile definiert den Pfad zur .htpasswd Datei. Er muss immer vom Homedir, meistens /home/ her definiert sein. require valid-user fordert einen gültigen Benutzer. Allow From All erlaubt den Zugriff auf alle Dateien des Ordners. <Files beispiel.php>Deny From All</Files> untersagt den allgemeinen Zugriff auf die Datei beispiel.php

5. Ausgabe von Errorseiten

Im HTTP-Standard sind verschiedene Fehlermeldungen spezifiziert. Wenn ein Fehler auftritt, sendet der Webserver den Fehlercode zusammen mit einer Fehlermeldung an den Client (Browser). Diese Fehlermeldung kann eine HTML Seite oder ein Plaintext sein, der erklärt, was für ein Fehler aufgetreten ist. Diese Seiten werden normalerweise automatisch vom Webserver ausgegeben. Durch die .htaccess Datei kann man sie jedoch beeinflussen. Folgende Fehlercodes gibt es:

Error 400 bad_request
Der Browser (oder Proxy) hat eine ungültige Anfrage gesendet, die vom Server nicht beantwortet werden kann.

Error 401 auth_required
Der Server kann nicht verifizieren ob, der User authorisiert ist, auf eine bestimmt URL zuzugreifen. Dabei kann ein falsches Passwort eingegeben worden sein oder der Browser kann die geforderten Referenzen nicht übermitteln

Error 403 forbidden
Der Webserver verweigert den Zugriff auf das angeforderte Verzeichnis. Entweder ist der Zugriff auf die Verzeichnisstruktur nicht erlaubt oder das Verzeichnis ist zugriffsgeschätzt.

Error 404 not_found
Die angeforderte Datei ist nicht vorhanden

Error 408 request_timeout
Nach einer gewissen Zeit, ohne das auf eine Anfrage eine Antwort geliefert werden konnte, schliesst der Webserver die Verbindung

Error 500 internal_server_error
Die Proxy-Anfrage kann nicht ausgeführt werden. Es ist im Server ein interner Fehler aufgetreten. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Script ist aufgetreten.

Weitere Errors sind:

Error 412 precondition_failed
Error 413 entity_too_large
Error 414 uri_too_large
Error 415 unsupported_media_type
Error 501 not_implemented
Error 502 bad_gateway
Error 503 service_unavailable
Error 506 variant_also_varies

5.1 Beispiel einer .htaccess Datei

Plain Text

ErrorDocument 404 "Die Angeforderte Datei ist nicht vorhanden.

Beim Plain Text wird die Fehlermeldung als ASCII Text an den Client gesendet. Das nicht zwei " vorhanden sind ist kein Schreibfehler

lokale Weiterleitung

ErrorDocument 404 /errors/404.html

Hier wird eine lokale Fehlerseie angezeigt. Hier darf kein relativer Pfad eingesetzt werden, sondern nur der Pfad vom 'public_html' Verzeichnis.

externe Weiterleitung

ErrorDocument 404 http://www.blattertech.ch/errors/404.html

Hier wird die URL zu einem anderen Server eingetragen.

6. Kann ich PHP auch auf .html-Dateien anwenden?

Man kann prinzipiell jede Datei mit einer beliebigen Endungen durch PHP verarbeiten lassen, so also auch die Endung .html . Wenn man keinen Zugriff auf die httpd.conf von Apache hat, kann man das Problem mit der .htaccess Datei lösen, die im public_html Verzeichnis ist. Es lassen sich natürlich nicht nur .html Dateien einbinden. So können auch PHP5 Dateien betrieben werden, wenn der Provider dies nicht anbietet.

Je nachdem, ob PHP in der Modul- oder der CGI-Version zum Einsatz kommt, unterscheiden sich die Konfigurationsanweisungen. Bei PHP5 ist das Modul die häufigere Art, hier sieht die Zeile meist so aus:

AddType application/x-httpd-php .php .php3 .php4 .html

Weitere Dateiendungen schreibt man einfach durch Leerzeichen getrennt hintereinander.

Wenn PHP nicht als Webserver-Modul, sondern als CGI, sieht der Eintrag folgendermassen aus:

AddType application/x-httpd-php3 .php3 .html
Action application/x-httpd-php3 /cgi-bin/php

// Für Windows
ScriptAlias /php3/ "/path-to-php-dir/"
AddType application/x-httpd-php3 .php3
Action application/x-httpd-php3 "/php3/php.exe"

Auswirkung auf die CPUs: Bei der Modulversion von PHP ergibt sich kaum ein höherer Rechenaufwand, wenn keine <?php Scripte angewendet werden. Im Vergleich braucht die CGI Version viel mehr Rechenaufwand, da die ganzen HTML Seiten durch das CGI-Programm ausgegeben werden müssen.