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.
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:
AuthName "Geheimbereich" |
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:
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.
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.
martin:YlfYyU1.N0Tpc |
Die Datei htpasswd sollte im ASCII modus übertragen werden, damit es keine Probleme mit dem Lesen der Daten gibt.
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.
Die Daten, die Sie angleichen müssen, sind blau markiert:
AuthType Basic |
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
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
ErrorDocument 404 "Die Angeforderte Datei ist nicht vorhanden. |
ErrorDocument 404 /errors/404.html |
ErrorDocument 404 http://www.blattertech.ch/errors/404.html |
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 |
Wenn PHP nicht als Webserver-Modul, sondern als CGI, sieht der Eintrag folgendermassen aus:
AddType application/x-httpd-php3 .php3 .html |
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. Ausführlichere Infos unter www.dclp-faq.de