über mich | E-Recruiting | Gästebuch | Grußkarten | Kontakt | Kurze Links | Links | Medien | Photoalbum | Webdesign | Sitemap

  Sie sind hier: Startseite > Webdesign > Die Steuerungsdatei für den Apache Webserver  

Startseite
Aktualisierungen
über mich
Downloads
Forum
Gästebuch
Grußkarten
Kontakt
Links
Photoalbum
PHP
Projekte
Weblog
Sitemap

Hi, ich bin Marcus. Schon bald führe ich Sie über meine Website
  


.htaccess | Die Steuerungsdatei für den Apache Webserver

Wie kann man einen Webserver steuern, insbesondere wenn man nicht die php.ini verändern kann (z. B. 1&1 Webhosting, Strato etc.)? Mit der .htaccess! Hier ein paar ausgewählte Möglichkeiten. Ich erarbeite gerade weitere nützliche Informationen zum Gebrauch ausschließlich auf 1&1 Webhosting/Puretec-Webspace, siehe hier - 1&1/Puretec. Ich habe zuerst eine allgemeine Erläuterung der drei Steuerungsdateien angeführt und danach folgen Detailbeispiele.


Erläuterung: .htaccess
Die Datei .htaccess ist die Konfigurationsdatei und legt die Art des Zugriffsschutzes sowie das Ziel der Passwortdatei fest.

AuthName

Kurze Beschreibung des geschützten Web-Bereichs. Diese Beschreibung wird in dem vom Browser generierten Fenster dem Anwender angezeigt.
AuthType
Der üblicherweise verwendete Authorisierungstyp ist Basic. In der vorliegenden Beschreibung wird nur auf Basic eingegangen, dieser Typ benutzt als Passwortdatei eine weitere Textdatei, hier im Beispiel die .htpasswd
AuthUserFile
Hier wird der absolute Pfad vom Doc-Root eingegeben, nicht der relative!
AuthGroupFile
Dateibezeichnung der Gruppendatei. Diese Angabe ist nur erforderlich, wenn Sie in der Konfigurationsdatei .htaccess die Direktive require group Mitarbeiter Kunden etc. verwendet haben.
<Limit> oder <Files>
Mit einer der beiden Direktiven wird angegeben, was geschützt werden soll.

Mit <Limit> werden alle Dateien in dem betroffenen Verzeichnis gegen den Zugriff über angegebene Methoden des Hypertext Transfer Protocols (http) abgesichert. Meist werden hier die Methoden GET und evtl. auch noch POST angegeben.

Mit <Files> können einzelne Dateien oder Dateigruppen geschützt werden. Bei der Angabe der Dateien können Wildcards benutzt werden, und zwar der Stern "*" für eine beliebige Anzahl von Zeichen und das Fragezeichen "?" für genau ein Zeichen. So kann z. B. mit <Files *.htm*> der Zugriff auf alle HTML-Dokumente geschützt werden, während der Zugang auf andere Dateitypen im gleichen Verzeichnis frei ist.

require
Mit der require-Direktive wird angegeben, nach welchem Kriterium Benutzer zugelassen werden sollen. Es gibt hier drei alternative Möglichkeiten:
  • require user martin stefan etc.
    Gibt den Bereich gezielt nur den aufgelisteten Benutzern frei. Diese Alternative erfordert einen hohen Pflegeaufwand, da alle neuen Nutzer explizit eingetragen werden müssen.
  • require valid-user
    Gibt den Bereich für alle in der Passwortdatei definierten Benutzer frei. Dies ist die am häufigsten verwendete Form, sie ist im Allgemeinen die Alternative, die sich am einfachsten pflegen läßt.
  • require group Kunden Mitarbeiter etc.
    Es dürfen Benutzer zugreifen, die einer der aufgeführten Gruppen Kunden, Mitarbeiter usw. angehören. Diese Variante bietet sich an, wenn man verschiedene Bereiche mit unterschiedlichen Zugriffsrechten versehen will, aber nur eine Passwortdatei pflegen möchte.

Erläuterung: .htpasswd
Die Datei .htpasswd ist die eigentliche Passwortdatei.

martin = 21JjhJqX/R84o
stefan = 21GVZUC7Vjx9w

Mehr dazu folgt weiter unten.

Erläuterung: .htgroup
In der Datei .htgroup können Benutzergruppen definiert werden. Die hier genannten Gruppen finden sich in der .htpasswd wieder.

mitarbeiter: Martin Stefan Tanja
kunden: Marcus Martin Ilse

Eine Gruppe wird definiert durch den Namen der Gruppe, gefolgt von einem Doppelpunkt und dann einer Anzahl von Benutzernamen derjenigen Anwender, die der Gruppe zugeordnet werden sollen. Es besteht keine Begrenzung der Anzahl der Gruppen oder welchen Namen die Gruppen haben sollen.


Ein Verzeichnis schützen
Möchtest du ein Verzeichnis (www.domain.de/verzeichnis/) schützen, damit niemand darauf zugreifen kann oder den Zugriff nur für eine definierte Benutzergruppe freigeben? Dazu lege bitte ein Verzeichnis an, z. B. pfad, wo alle zu schützenden Dateien abgelegt werden. Dabei ist es völlig egal, um welche Dateien es sich handelt. Beim Aufruf einer Datei aus diesem Verzeichnis wird vom Browser ein Fenster generiert, in dem der User Benutzernamen und Kennwort eingeben muss, bevor diese Datei angezeigt wird. In diesem Verzeichnis erzeugst du eine neue Datei mit der Bezeichnung .htaccess. Schreibe folgende Zeilen hinein:

AuthUserFile /pfad/.htpasswd
AuthGroupFile /dev/null
AuthName "name"
AuthType Basic
<Limit GET>
require valid-user
</Limit>


In der ersten Zeile gibst du den absoluten Pfad zur Passwortdatei .htpasswd ein (nicht den relativen Pfad!). Dieser ist je nach Provider unterschiedlich, z. B. /homepages/20/d1234567/htdocs/.htpasswd. Den absoluten Pfad teilt dir dein Provider mit oder wirf ein Blick in dein Konfigurationsmenü, oftmals gibt es dort die gewünschte Information! Die .htpasswd muss nicht zwingend in dem zu schützenden Ordner liegen, du kannst diese auch für diverse Ordner zentral ablegen und verweist nur mit dem absoluten Pfad dorthin.

Lege nun eine zweite Datei in das Verzeichnis mit dem Namen .htpasswd. In diese Datei schreibst du nun alle Benutzernamen und dahinter das zugehörige verschlüsselte Passwort. Um das Passwort zu generieren steht dir der Crypt-Generator zur Verfügung. Das Passwort könnte dann beispielsweise so aussehen:

martin = 21JjhJqX/R84o
stefan = 21GVZUC7Vjx9w

Schreibweise in der .htpasswd: martin:21JjhJqX/R84o
Wichtig ist, dass keine Leerzeichen in der .htpasswd enthalten sind!

Links auf deine Bilder verhindern
Füge der .htaccess-Datei folgendes hinzu:

# Rewrite Rule for images
RewriteCond %{HTTP_REFERER} <ihrURL> RewriteRule ^(.*)$ http://<ihrURL>

Permanente Änderung des aufgerufenen Hosts mit mod_rewrite
Füge der .htaccess-Datei folgendes hinzu, und du erhältst damit eine permanente Weiterleitung von der Domain beispiel.de zu beispiel.org

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.beispiel\.de$ [NC]
RewriteRule ^(.*) http://www.beispiel.org/$1 [R=permanent]

1&1 Webhosting, Verbesserung bei negativem Point mit mod_speling
Viele Provider, darunter auch 1&1 Webhosting, haben das Apache Modul mod_speling standardmäßig aktiviert. Will heißen, ruft jemand eine Datei namens pfad123.php auf (oder Grafik etc.), es existiert allerdings nur eine Datei mit dem Namen pfad124.php, wird diese Datei aufgerufen. Im Grunde ja sinnvoll, wer das nicht möchte, fügt bitte folgende Zeite in die .htaccess hinzu.

CheckSpelling Off

Einen oder mehrere Benutzer sperren
Mit folgendem Eintrag kannst du entweder bestimmte Benutzer (IP-Adressen) festlegen, die Zugriff auf den Server haben, oder Benutzer die keinen Zugriff haben.

Nur bestimmte IP-Adressen haben Zugriff:
order deny, allow
allow from 228.105.55.101
deny from all


Bestimmte IP-Adressen haben keinen Zugriff:
order deny, allow
deny from 228.105.55.101

Bestimmte Dateien sperren
Willst du nicht, dass alle Dateien mit einem Punkt, z. B. die .htaccess- oder die .htpasswd-Datei, vom Server ausgeliefert werden, nutze folgenden Code:

<FilesMatch "^\." >
deny from all
</FilesMatch>

Bestimmte Dateitypen zum Download freigeben
Bietest du Downloads an, dann ist es vielleicht sinnvoll bestimmte Dateien direkt zum Downloaden anzugeben:

<FilesMatch "\.(gz|pdf|zip|exe)$" >
ForceType application/octet-stream
</FilesMatch>

Fehlerseiten abfangen
Diese Möglichkeit ist eine sehr gute Idee, die wenig hilfreichen Fehlermeldungen vom Browser zu umgehen, wie z. B. wenn die angeforderte Seite nicht gefunden wurde. Schreibe in eine .htaccess-Datei z. B. folgenden Code:

ErrorDocument 403 http://www.website.de/error403.php
ErrorDocument 404 http://www.website.de/error404.php
ErrorDocument 500 http://www.website.de/error500.php


Den Fehler 500 kannst du speziell bei 1&1 Webhosting (vormals Puretec) nicht mit der .htaccess abfangen. Hier legst du die Fehlerdatei mit dem Namen error500.html in das Wurzelverzeichnis (Root) deines Webservers.

Automatische Weiterleitung
Selbstverständlich kannst du auch eine Weiterleitung setzen. Dabei muss die .htaccess-Datei im obersten Ordner (root) liegen.

Redirect / http://www.anderewebsite.de/

Zweite Möglichkeit der Weiterleitung besteht darin, dass der User bei Eingabe eines bestimmten Verzeichnisses weitergeleitet wird. Beispiel:

Redirect /pfad http://www.ganzanderewebsite.de/

Gibt nun jemand den URL www.anderewebsite.de/pfad ein, wird er auf die Domain www.ganzanderewebsite.de/ weitergeleitet.

Server für SSI-Anweisungen konfigurieren
Um Apache-Servern mitzuteilen, dass sie SSI (Server Sides Includes) bearbeiten sollen, gibt man in der .htaccess-Datei folgendes an:

AddHandler server-parsed .shtml
Options+ Includes


Alternativ können auch andere Dateiendungen, wie z.B. .html oder eine freie Erfindung wie .marcus an den Handler übergeben werden. Man sollte aber generell auf .html als Handler verzichten, da die Performance des Servers dadurch mehr beansprucht würde, außer man benutzt PHP-Scripte in den HTML-Dateien.

Bei anderen Endungen, würde es so beispielsweise aussehen:

AddHandler server-parsed .marcus

Bestimmte Dateien als PHP4 ausführen lassen
Du kannst beliebige Dateitypen als PHP4-Skripte parsen lassen. Häufig besteht der Wunsch z. B. .xxx-Dateien als PHP4-Skripte auszuführen.

AddType x-mapp-php4 .xxx

Dabei steht .xxx für irgendeine freie Endung (php, php3, php4, phtml etc.).

Bestimmte Datei als Startdatei aufrufen
Meistens heißt die Startdatei der meisten Provider index.html, default.html, welcome.html oder home.html. Du kannst auch einen beliebigen anderen Namen als Startdatei verwenden, wie z.B. index.php, index.shtml, index.php4 oder sogar startdatei.marcus. Dazu lege folgendes an:

DirectoryIndex index.shtml

In diesem Beispiel würde die Startdatei index.shtml aufgerufen werden, soweit sie vorhanden ist.

Dynamische Seiten suchmaschinenfreundlich machen
Mit Adressen wie http://www.reif.org/news/news.php?number=5 kommen nicht alle Suchmaschinen klar. Suchmaschinen hätten gerne ganze Adressen, wie z.B. http://www.reif.org/news/frankfurt.html. Mit folgendem Eintrag in der .htaccess schaffst du Abhilfe.

RewriteEngine on
RewriteCond %{REQUEST_URI} news(.*)\.html$
RewriteRule news(.*)\.html$ /news.php?id=$1

Wie sieht nun eine komplette .htaccess aus?
ErrorDocument 503 /503.php
ErrorDocument 501 /501.php
ErrorDocument 500 /500.php
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 401 /401.php

AddType x-mapp-php4 .php

AddHandler server-parsed .xml

Order deny,allow
Deny from 62.109.108.248

Redirect /testpfad/nochenpfad http://test.reif.org

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.reif-online\.de$ [NC]
RewriteRule ^(.*) http://www.reif.org/$1 [R=permanent]

Weitere Infos findest du auch in den FAQs und Support-Unterlagen deines Providers. Inhalte auszugsweise von http://www.trash.net/faq/htaccess.shtml entnommen sowie in eigener Recherche.

 
Zitate & Phrasen
Lieber geliebt haben und verlieren, als wahre Liebe nicht kennengelernt zu haben

Mehr Filmzitate gibt es unter Phrasen.
E-Recruiting
Der Markt der Jobbörsen und viele Infos über E-Recruiting. Mehrfach täglich neue Berichte.
Gästebuch
Bitte tragen Sie sich ins Gästebuch ein. Der letzte Eintrag mit der Nr. 217 ist von Wingrider.
kurze Links
Aus langen Links kurze machen http://url.reif.org.
Medien
Allerlei Wissen zu Thailand, Netiquette, PHP, BRD etc. auf Medien.
Webdesign
Viele Informationen und Hilfsmittel zum Thema Webdesign.
  
Seite weiterempfehlen Diese Seite weiterempfehlen | Sonntag, 18. Mai 2008
 
Dies ist die Website von Marcus Reif | www.reif.org | Alle Rechte vorbehalten                                    Kontakt | Impressum