Was ist htaccess?
Mit Hilfe von htaccess kann man Vorgaben, die der Administrator des
Servers gemacht hat, ändern.
Das ist z.B. nützlich, wenn Ihr das Aussehen eines Verzeichnislistings ändern oder eine andere Dateieendung
als SSI betrachten lassen wollt.
Dies funktioniert so: In einer Datei (normalerweise heisst sie '.htaccess') stehen die Änderungen.
Diese Datei ist wiederum in einem Verzeichnis, sagen wir im mal 'A'. Wenn nun von einem Client die Anforderung
kommt, er möchte das Verzeichnis 'A' vom Webserver, so liest der Apache die
Datei '.htaccess' und führt die Änderungen durch. Dieses Verfahren ist
vorallem dazu gedacht, das Benutzer Vorgaben für ihr
'public_html'-Verzeichnis ändern können. Auf Stinky könnt Ihr alle Vorgaben
mit Hilfe von htaccess ändern.
Wichtig: Wenn Ihr eine Verzeichnisstruktur habt, z.B. so:
/home/heiri/public_html/A/B/C/D/
und dann die htaccess-Datei in das Verzeichnis
'public_html' tut, dann gelten die Änderungen auch in den
Unterverzeichnissen A, B, C,
und D . Es sei denn, in den Unterverzeichnissen hätte es
auch eine htaccess-Datei, dann werden die Änderungen von dieser
wieder aufgehoben.
Dies hier ist ein Beispiel für eine htaccess-Datei:
-------------------->>--------------------
Options +Includes +ExecCGI
DirectoryIndex startup.html
AddDescription "Ein tolles Bild." /home/thomasb/public_html/bild.jpg
AddDescription "Ein Bild." bild.jpg
AddEncoding x-gzip gz
AddEncoding x-compress Z
AddType image/jpeg jpg
AddType image/gif gif
AddIcon /icons/continued.gif ^^DIRECTORY^^
AddIcon /icons/unknown.gif ^^BLANKICON^^
AddIcon /icons/box1.gif *g*
AddIcon /icons/a.gif html
AddIconByEncoding /icons/box1.gif x-compress
ErrorDocument 404 /~tb/error/404.html
ErrorDocument 500 http://www.x.ch/errors/500.html
ErrorDocument 403 "Kein Zugriff.
--------------------<<---------------------
|
Wichtige Hinweise
In dieser FAQ hat es einige Begriffe, die nicht selbsterklärend sind, einige davon werde ich jetzt kurz erklären:
Pfad, absolut vom root-Verzeichnis (oder Wurzelverzeichnis) des Servers aus:
Wenn Ihr auf stinky eingeloggt seid, dann ist das Verzeichnis / das root-Verzeichnis (Wurzelverzeichnis)
des Servers. Ein absoluter Pfad vom root-Verzeichnis aus gesehen wäre z.B.:
/home/thomasb/public_html/Linux
|
Pfad, absolut vom DocumentRoot des Webservers
Wenn Ihr zum Beispiel folgendes Dokument anfordert
http://www.trash.net/users/index.html
|
Dann ist ist der Pfad absolut vom DocumentRoot des Webservers aus gesehen
Pfad, relativer
Ein relativer Pfad ist immer vom aktuellen Standort aus gesehen. Wenn Ihr im Verzeichnis
seid und dann einen relativen Pfad angebt, z.B.:
dann wird das als
/temp/files/download/programm/source/
|
interpretiert. Einen relativen Pfad erkennt man immer daran, dass er keinen Slash (/) am Anfang hat.
Ändern der htaccess-Datei
Wie bereits erwähnt, heisst die htaccess-Datei
normalerweise .htaccess. Ihr könnt dies aber auch ändern:
Damit wird in allen Unterverzeichnissen die Datei .datei als
htaccess-Datei verwendet. Ihr könnt auch mehrere Dateien
angeben:
AccessFileName .datei .datei2
|
So werden die beiden Dateien .datei und .datei2 als
htaccess-Datei verwendet. Ihr solltet allerdings wissen was Ihr
tut, wenn Ihr diese Option ändern wollt, da das Ändern dieser Option u.U.
schlimme Auswirkungen haben kann.
Mittels htaccess könnt Ihr die Standardseite eurer Seite
ändern. Die Standardseite ist die Seite, die angezeigt wird, wenn jemand
bloss einen Verzeichnisnamen angibt, z.B. http://www.trash.net/~thomasb/.
Wie man sehen kann, ist hier keine HTML-Seite angegeben. Der Webserver
schickt in diesem Fall einfach die Standardseite.
Mit folgender Zeile in der .htaccess-Datei könnt Ihr das
Standarddokument ändern:
DirectoryIndex index.html default.html start.shtml
|
Falls jetzt jemand einfach einen Verzeichnisnamen angibt, versucht der
Webserver zuerst die Datei index.html an den Client zu schicken.
Falls die Datei index.html nicht vorhanden ist, wird einfach die
nächste Datei (in diesem Fall default.html) an den Client geschickt. Wenn diese auch nicht vorhanden ist,
so kommt die nächste dran usw. Erst wenn die Liste abgearbeitet ist, sendet
der Webserver einer Verzeichnislisting an den Client. Selbstverständlich
kann man hier beliebige Dateinamen einfügen und die Liste darf auch
beliebig lang sein.
Eigene Fehlermeldungen spezifizieren
Im HTTP-Standard sind verschiedene Fehlermeldungen spezifiziert. Falls
ein Fehler auftritt, sendet der Webserver den Fehlercode zusammen mit einer
Fehlermeldung an den Client. Die Fehlermeldung ist meistens eine HTML-Seite,
auf der erklärt wird, was genau für ein Fehler aufgetreten ist.
Normalerweise wird diese HTML-Seite von dem Webserver automatisch generiert,
doch man kann diese Seiten auch selber schreiben. Doch zuerst muss man
wissen, was für Fehlermeldungen es gibt:
HTTP-Error 404
Bei diesem Fehler wurde die Datei, die der Client anfordern wollte nicht
gefunden. Sie ist entweder nicht vorhanden, wurde gelöscht oder verschoben.
Es ist aber auch möglich, dass sich der Benutzer des Clients vertippt hat
:-).
HTTP-Error 500
Dies ist der "Internal Server Error". Er kann durch folgende
Dinge hervorgerufen werden:
- Fehlkonfiguration des Webservers
- Schreibfehler in der htaccess-Datei
- Ein CGI-Skript funktioniert nicht richtig
HTTP-Error 403
Dieser Fehler entsteht, wenn Dir jemand nicht erlaubt auf ein Verzeichnis
oder eine Datei zuzugreifen.
Jetzt kennst Du die Fehlercodes der verschiedenen Fehlermeldungen. Jetzt
kannst Du mittels htaccess eigene Fehlermeldungen basteln. Es gibt
verschiedene Typen:
- Plain Text
Bei diesem Typ von Fehlermeldung wird dem Client einfacher ASCII-Text
gesendet. So lautet der Syntax in der htaccess-Datei:
ErrorDocument xxx "Ein Fehler ist aufgetreten. Bitte starten
sie ihren Browser neu.
|
Den String xxx müsst Ihr noch durch den Fehlercode des
HTTP-Errors ersetzen (siehe oben). Beachtet ausserdem: Das Anführungszeichen
ist hier nicht nicht geschlossen. Dies ist kein Schreibfehler, es
muss tatsächlich so sein.
- lokale Weiterleitungen
Bei diesem Typ von Fehlermeldung wird dem Client eine andere Seite auf
dem Webserver geschickt. So lautet der Syntax in der
htaccess-Datei:
ErrorDocument xxx /~thomasb/errors/404.html
|
Den String xxx müsst Ihr noch durch den Fehlercode des
HTTP-Errors ersetzen. Ausserdem müsst Ihr beachten, dass ihr keinen
relativen Pfad einsetzt. Selbstverständlich könnt Ihr auch auf ein
CGI-Skript verweisen.
- externe Weiterleitungen
ErrorDocument xxx http://www.trash.net/~thomasb/errors/xxx.html
|
Verschiedene Optionen
In der htaccess-Datei können noch weitere Optionen konfiguriert
werden. Dafür gibt es den Options-Befehl, dem die gewünschten
Optionen übergeben werden können, z.B. so:
Options +ExecCGI -Indexes
|
In diesem Beispiel wird die Option ExecCGI hinzugefügt
(deshalb auch das "+") und die Option Indexes entfernt
(deshalb auch das "-"). Man kann beliebig viele Optionen
hinzufügen oder entfernen. Hier eine Übersicht über die möglichen
Optionen:
ExecCGI
Damit kann gesteuert werden, ob in den betreffenden Verzeichnissen
CGI-Scripts ausgeführt werden dürfen.
Includes
Hiermit kann die Verwendung von "Server Side Includes"
gesteuert werden. Mit +Includes werden SSI-Dokumente geparst, mit
-Includes werden sie nicht.
IncludesNOEXEC
Hiermit kann gesteuert werden, ob die #exec und
#include Tags in SSI-Dokumenten beachtet werden sollen, sprich ob
SSI-Seiten CGI-Skripts starten können oder nicht..
Indexes
Wenn ein Client die Anfrage nach einem Verzeichnis raussendet (also die
URL http://www.trash.net/~thomasb/) und in diesem Verzeichnis keine
Standardseite (zur Konfiguration der Standardseite) vorhanden
ist, so sendet der Webserver einfach eine Auflistung der in dem Verzeichnis
vorhandenen Daten. Mit der Indexes-Option könnt Ihr steuern, ob Ihr
dies erlauben wollt. Mit
sendet der Webserver kein Verzeichnislisting sondern gibt dann den HTTP-Error 403 aus, mit
sind Verzeichnislistings erlaubt.
FancyIndexing
Mit FancyIndexing ist es möglich, dem Verzeichnislisting, dass der
Webserver erzeugt wenn keine Standardseite vorhanden ist (zur Konfiguration
der Standardseite) ein anderes Aussehen zu Verpassen.
Zuerst müsst Ihr jedoch FancyIndexing anschalten. Dies
geschieht mit folgender Zeile in der htaccess-Datei:
Nun habt Ihr viele Optionen um das Verzeichnislisting zu steuern:
AddDescription
Mit folgender Zeile könnt Ihr erreichen, dass im Verzeichnislisting
neben dem Dateinamen eine Beschreibung auftaucht:
AddDescription "Dies ist ein Bild" bild.jpg
|
Jetzt erscheint im Verzeichnislisting neben jeder Datei, die
"bild.jpg" heisst die Beschreibung "Dies ist ein Bild".
Beschreibungen, die Ihr festgelegt habt, gelten für alle
Unterverzeichnisse.
Natürlich könnt Ihr auch einen absoluten Pfad angeben, falls Ihr nur
einer bestimmten Datei die Beschreibung zuordnern wollt:
AddDescription "Dies ist ein neues Bild" /home/thomasb/public_html/bild.jpg
|
Dann erscheint die Beschreibung "Dies ist ein neues Bild" nur
bei der Datei "/home/thomasb/public_html/bild.jpg" und nicht bei anderen Dateien, die
auch "bild.jpg" heissen. Hinweis: Der absolute Pfad muss
vom Wurzelverzeichnis des Servers ausgehen.
Selbstverständlich können im Dateinamen auch Wildcards eingesetzt werden
("*" und "?").
AddEncoding
Diese Einstellmöglichkeit mappt eine Dateiendung zu einem spezifizierten
MIME-Encoding-Typ:
AddEncoding x-gzip gz
AddEncoding x-compress Z
|
Die hier aufgeführten sollten die gebräuchlichsten sein. Natürlich könnt
Ihr auch andere MIME-Encoding-Typen spezifieren, der Syntax von
Encoding lautet:
AddEncoding "Typ" "Dateiendung ohne Punkt"
|
AddType
Mit dieser Einstellmöglichkeit könnt Ihr MIME-Typen auf Dateiendungen
mappen. Der Syntax sieht folgendermassen aus:
AddType "MIME-Type" "Dateiendung ohne Punkt"
|
Für den String MIME-Type könnt Ihr einen beliebigen MIME-Type
angeben, z.B. text/plain. Dateiendung ohne Punkt müsst Ihr
durch die Dateiendung ersetzen. Bsp: Wenn Ihr eine Datei trash.txt habt,
dann ist die Dateiendung txt. Beachtet bitte, dass Ihr die
Dateiendung ohne Punkt angeben müsst. Ein gültiger Eintrag könnte so
aussehen:
AddIcon
Hiermit könnt Ihr die Icons, die im Verzeichnislisting für jede Datei
angezeigt werden, verändern. Es gibt viele Möglichkeiten, diese Bildchen zu
verändern. Hier folgt ein Beispiel, wie Ihr einer bestimmten Endung eine
bestimmtes Bildchen zuweisen könnt:
AddIcon /icons/box1.gif html
|
So wird bei jeder Datei, die die Endung html hat, das Bild
/icons/box1.gif angezeigt. Der absolute Pfad zum Bild geht hier vom
DocumentRoot des Webservers aus. Ihr könnt natürlich auch den Pfad zum Bild
relativ angeben. Da dies jedoch spezielle Vorkommnisse erfordert, wird an
dieser Stelle nicht weiter daraufeingegangen.
Ihr könnt natürlich nicht nur Icons an speziellen Dateiendungen vergeben,
Ihr könnt dabei auch eine Datei benennen:
AddIcon /icons/box1.gif heiri.html
|
So enthält jede Datei, die den Namen heiri.html hat als Icon die
Datei /icons/box1.gif. Falls genau eine bestimmte Datei ein
spezielles Icon erhalten soll, so müsst Ihr den Pfad der Datei absolut, vom
Wurzelverzeichnis des Server gesehen angeben, z.B. so:
AddIcon /icons/box1.gif /home/thomasb/public_html/heiri.html
|
So wird das Icon /icons/box1.gif der Datei
/home/thomasb/public_html/heiri.html zugewiesen. Auch hier wird für das Icon der
Pfad absolut vom DocumentRoot des Webservers genommen. Doch dies ist noch
längst nicht alles: Es ist auch möglich, einem Verzeichnis ein eigenes
Bildchen zu geben:
AddIcon /icons/box1.gif ^^DIRECTORY^^
|
Der String ^^DIRECTORY^^ steht für Verzeichnis. So wird jedem
Verzeichnis das Icon /icons/box1.gif verliehen. Ihr könnt auch das
Icons, dass links-oben im Verzeichnislisting angezeigt wird ändern:
AddIcon /icons/box1.gif ^^BLANKICON^^
|
^^BLANKICON^^ steht Stellvertretend für obengenanntes Icon.
Doch dies ist noch lange nicht alles, Ihr könnt auch Wildcards
benutzen:
AddIcon /icons/box1.gif g*.html
|
Damit weist Ihr jeder Datei, die mit g beginnt und als Endung
.html hat das Icons /icons/box1.gif zu. Es gibt noch
weitere Möglichkeiten:
Allen Dateien, die den Buchstaben g enthalten, das Icon
/icons/box1.gif zuweisen:
AddIcon /icons/box1.gif *g*
|
Allen Dateien, die mit einem beliebigen Buchstaben beginnen und
mit -buchstabe aufhören das Icon /icons/box1.gif
zuweisen:
AddIcon /icons/box1.gif ?-buchstabe
|
AddIconByEncoding
Hiermit könnt Ihr Icons nach dem MIME-Encoding-Type zuweisen
(zur Konfiguration von Encoding):
AddIconByEncoding /icons/box1.gif x-compress
|
Hiermit wird allen Dateien, die den MIME-Encoding-Type
x-compress haben, das Icon /icons/box1.gif zugewiesen.
Wichtig: Der MIME-Encoding-Type muss zuerst spezifiert
worden sein (dies geschieht mit dem Befehl Encoding, siehe
oben).
AddIconByType
Hiermit könnt Ihr Icons nachem dem MIME-Typ zuweisen ( zur
Konfiguration von AddType). Beachtet aber, dass der
MIME-Typ definiert sein muss. Bsp:
AddIconByType /icons/box1.gif text/html
|
So wird allen Dateien, die den MIME-Type text/html haben, das
Icon /icons/box1.gif zugewiesen. Bei der Angabe des MIME-Types
könnt Ihr auch Wildcards verwenden:
AddIconByType /icons/box1.gif text/*
|
So weist Ihr allen Dateien, die dem MIME-Typ text/* entsprechen
das Icon /icons/box1.gif zu. Das "*" entspricht einem
beliebigen Text.
DefaultIcon
Mit der Variable DefaultIcon könnt Ihr den Dateien, für die kein
Icon zugewiesen worden ist, ein Standardicon festlegen:
DefaultIcon /icons/box1.gif
|
So wird allen Dateien, für die nicht explizit ein Icon zugewiesen worden
ist, das Icon /icons/box1.gif zugewiesen. Der Pfad zum Icon muss
absolut, vom DocumentRoot des Webservers aus gesehen, sein.
HeaderName
Bei dem Verzeichnislisting wird normalerweise im oberen Teil der aktuelle
Pfad angeben. Mit der Variable HeaderName könnt Ihr dort auch etwas
anderes anzeigen. Die nach HeaderName spezifizierte Datei wird am
Anfang des Verzeichnislistings angezeigt.
Falls jetzt ein Verzeichnislisting angezeigt wird, und in dem
betreffenden Verzeichnis befindet sich die Datei HEADER, so wird
diese am Anfang des Listings angezeigt. Falls sich in dem betreffenden
Verzeichnis keine in HeaderName aufgeführte Datei befindet, so wird
das normale Verzeichnislisting angezeigt. Ihr könnt nur eine Datei in
HeaderName spezifizieren.
ReadmeName
Dies ist das Gegenteil zu obengenanntem HeaderName. Der Inhalt
dieser Datei wird beim Verzeichnislisting anstelle der Serversignatur
angezeigt. Und so könnt Ihr das verwenden:
Sie wird das Dokument README im unteren Teil des Verzeichnislistings
angezeigt. Was noch zu beachten ist: Falls es die Datei
"README.HTML" gibt, wird diese anstelle der Datei
README verwendet.
IndexIgnore
Hier könnt Ihr Dateien auflisten, die nicht im Verzeichnislisting
erscheinen sollen. Ihr könnt ganze Dateinamen, Endungen von Dateien und
Wildcards verwenden.
IndexIgnore README .htaccess *~
|
In diesem Beispiel werden folgende Dateien nicht aufgelistet: Alle
Dateien, die README heissen, alle Dateien, die .htaccess
heissen und alle Dateien, die am Schluss eine Tilde (~) enthalten.
Standardmässig werden alle Dateien ignoriert, die mit einem Punkt
beginnen.
Anderes Beispiel:
Mit dieser Anweisung wird kein Link zum übergeordneten Verzeichnis
generiert.
IndexOptions
Hiermit kann man das Aussehen des Verzeichnislistings sehr stark
beeinflussen. Dies hier ist ein Beispiel:
IndexOptions IconHeight=60 IconWidth=35 IconsAreLinks ScanHTMLTitle
|
Dieser Befehl kennt mehrere Optionen, die ich hier nun kurz vorstellen werde:
IconHeight=[Wert in Pixel]
Hiermit könnt Ihr Höhe, die die Icons neben den Dateinamen haben ändern.
Direkt hinter dem IconHeight= müsst Ihr die gewünschte Höhe angeben, in
Pixel (Keinen Leerschlag machen!). Beachtet bitte, dass wenn ihr die Höhe spezifiziert, dass Ihr dann
auch die Breite spezifizieren müsst, das der Webserver diese Option sonst
ignoriert.
IconWidth=[Wert in Pixel]
Hier könnt Ihr die Breite der Icons, die neben dem Dateinamen im
Verzeichnislisting erscheinen, ändern. Setzt einfach den Wert in Pixel
direkt neben IconWidth= (Keinen Leerschlag machen!). Beachtet, dass
wenn Ihr die Breite eines Icons spezifiziert, dass Ihr dann auch die Höhe
angeben müsst, da der Webserver sonst die Angabe ignoriert.
IconsAreLinks
Damit befiehlt Ihr dem Webserver, dass er die Icons als Link auf die
betreffende Datei darstellen soll.
NameWidth=[n*]
Hiermit legt Ihr die Breite der Spalte der Dateinamen festlegen. Falls
Ihr einen bestimmten Wert bestimmen wollt, müsst Ihr diesen als Bytes
angeben (1 Buchstabe = 1 Byte), z.B.:
legt fest, dass die Spalte für den Dateinamen 5 Zeichen breit sein soll.
Als Wert könnt Ihr auch ein "*" einsetzen, dann wird die
Spaltenbreite aus dem längsten Dateinamen bestimmt.
ScanHTMLTitles
Mit dieser Option könnt Ihr dem Webserver befehlen, die HTML-Seiten-Titel
jeder HTML-Seite auszulesen und in der Spalte "Description"
anzuzeigen. Bitte beachtet, das diese Option sehr CPU- und
Festplattenbelastend ist.
SuppressColumnSorting
Mit dieser Option könnt Ihr verhindern, dass die beim Verzeichnislisting
normalerweise als Links dargestellten Tabellenüberschriften (z.B.
"Name" oder "Size") als Links angezeigt werden.
SuppressDescription
Damit könnt Ihr die Beschreibung im Verzeichnislisting ausblenden.
SuppressLastModified
Damit könnt Ihr verhindern, dass im Verzeichnislisting angezeigt wird,
wann die Datei zuletzt geändert wurde.
SuppressSize
Damit wird die Dateigrösse im Verzeichnislisting ausgeblendet.
IndexOrderDefault
Hiermit könnt Ihr die Sortierreihenfolge des Verzeichnislistings angeben.
Normalerweise wird es alphabetisch nach dem Dateinamen sortiert. Dieser
Befehl erwartet zwei Angaben, n‹ämlich ob aufsteigend ("Ascending") oder
absteigend ("Descending") sortiert werden soll und was als
Kriterium gelten soll. Gültige Kriterien sind:
- "Name" (Dateiname),
- "Size" (Dateigrösse),
- "Date" (Datum der letzten Änderung) und
- "Description" (Beschreibung).
Bsp: Wenn Ihr das Listing nach Dateinamen aufsteigend sortieren wollt:
IndexOrderDefault Ascending Name
AddAlt
Beim Verzeichnislisting hat es neben jeder Datei ein Icon. Die
Beschriftung dieses Icons entspricht normalerweise dem Dateityp. Mit der
Direktive "AddAlt" könnt Ihr den Inhalt der Beschriftung des Icons
‹ändern:
AddAlt "Ich bin eine Datei" datei.gif
|
In diesem Beispiel wird dem Icon der Datei datei.gif als Beschriftung Ich bin ein Datei
gegeben. Die Beschriftung muss zwischen Anführungs- und Schlusszeichen stehen. Anstelle eines Dateinamens
könnt Ihr auch Wildcards angeben:
AddAlt "Beschriftung" abc*.html
|
In diesem Beispiel wird allen HTML-Dateien, die mit abc beginnen die
Beschriftung Beschriftung zugewiesen. Ihr könnt auch Dateiendungen angeben:
So erhalten alle Icons der Dateien, die die Endung jpg aufweisen die
Beschrifung Bild. Beachtet aber, dass dann auch das Icon einer Datei namens jpg
die Beschriftung Bild bekommt.
AddAltByEncoding
So könnt Ihr allen Dateien, die einem bestimmten Encodingtyp zugeordnet
sind, eine Beschriftung verleihen. Um zum Beispiel allen Icons der Dateien, die
dem Encodingtyp x-gzip angehören die Beschriftung Test zugeben,
müsst Ihr folgende Zeile verwenden:
AddAltByEncoding "Test" x-gzip
|
Auch hier muss die Beschriftung zwischen Anführungs- und Schlusszeichen stehen.
AddAltByTyp
Hiermit kann den Icons der Dateien, die einem bestimmten Mime-Typ angehören,
eine neue Beschriftung gegeben werden. Als Beispiel: Um allen Icons der Dateien,
die dem Mime-Type text/plain angehören, die Beschriftung Dies ist Plaintext
zu geben, müsst Ihr folgende Zeile in eure htaccess-Datei hinzufügen:
AddAltByType "Dies ist Plaintext" text/plain
|
Auch hier muss die Beschriftung zwischen Anführungs- und Schlusszeichen stehen.
Passwortschützen von Verzeichnissen
Mit htaccess könnt Ihr natürlich auch Verzeichnisse passwortschützen. Dazu benötigt Ihr zuerst eine Passwortdatei. Am besten ist es,
wenn Ihr die in das Verzeichnis html_auth in eurem Heimatverzeichnis speichert. Die Datei wird mit dem Programm
htpasswd erzeugt:
user@stinky:~> htpasswd -c /home/user/html_auth/htpasswd user
|
So wird eine Passwortdatei erzeugt und der Benutzername user hinzugefügt. Du musst nun zweimal das Passwort für den
Benutzername user eingeben. Du kannst selbstverständlich auch einen anderen Dateinamen oder Benutzernamen wählen, dies
hier soll nur ein Beispiel sein.
Du kannst auch andere Benutzernamen hinzufügen:
user@stinky:~> htpasswd /home/user/html_auth/htpasswd user2
|
Hier wird die Option -c weggelassen, dies ist auch wichtig, da Du sonst die alte Datei vollständig
überschreiben würdest!. Du kannst neben einer Passwortdatei auch eine Gruppendatei erstellen. Diese hat folgendes Format:
my-users: hans jakob heiri lisbeth
|
So wird definiert, dass die Benutzer hans, jakob, heiri und lisbeth der Gruppe my-users angehören.
Hierbei ist wichtig, dass die genannten Benutzer auch in Deiner Passwortdatei vorkommen müssen. Du kannst auch mehrere Gruppen
spezifizieren, benutze dabei für jede Gruppe eine Zeile!. Du kannst diese Datei dann auch in Deinem html_auth-Verzeichnis speichern,
z.B. mit dem Dateinamen htgroups
Wenn Du die Passwortdatei erstellt hast, so kannst Du nun die .htaccess-Datei erstellen.
Sie sollte in dem Verzeichnis sein, dass Du schützen willst und folgende Zeilen enthalten:
AuthType Basic
AuthName "A secret Place"
AuthUserFile /home/user/html_auth/htpasswd
AuthGroupFile /home/user/html_auth/htgroups
require valid-user
|
Der Text hinter AuthName gibt dem Bereich einen Namen, den sich der Browser merken kann (er muss dann nicht bei jedem
Reload nach dem Passwort fragen). AuthUserFile erwartet den vollen Pfad zu Deiner Passwortdatei, und AuthGroupFile
erwartet den vollen Pfad zu einer Gruppendatei. Falls Du keine hast, so gib /dev/null an. require regelt schliesslich,
welche Bedingung eintreffen muss, damit der Bereich geöffnet wird:
- valid-user (der Benutzer muss in der Passwortdatei vorkommen)
- user hans (nur der Benutzer hans wird zugelassen
- user hans heiri (nur die Benutzer hans und heiri werden zugelassen
- group my-users (alle Mitglieder der Gruppe my-users werden zugelassen
Du kannst ohne Probleme mehrere require-Bedingungen einbauen.
Die <Limit>-Option
Mit der <Limit>-Option könnt Ihr steuern, wer die HTTP-Befehle GET, PUT, POST ausführen kann
und wer nicht. Beispiel:
<Limit GET>
Order allow,deny
Allow from all
Deny from none
</Limit>
<Limit POST,PUT>
Order deny,allow
Deny from all
Allow from .ch
</Limit>
|
In diesem Beispiel können alle die Seiten anschauen (GET), aber nur Hosts, deren Hostname mit .ch aufhört
können die Befehle PUT und POST machen. Ihr könnt die Befehle Order, Allow und Deny
auch für alle Befehle gültig machen, indem Ihr sie nicht innerhalb eines <Limit>-Bereiches gebraucht:
Order deny,allow
Deny from .konkurrenz.com
Deny from center.bluewin.ch
Deny from 192.168>
Allow from all
|
Hier wird der Zugriff für alle Host aus der Domain konkurrenz.com gesperrt. Auch der Host center.bluewin.ch
darf nicht zugreifen. Alle Zugriffe eines Rechner, dessen IP mit 192.168 beginnt, werden auch gesperrt. Alle anderen Rechner
dürfen auf die Seiten zugreifen.
Der Befehl Order legt fest, in welcher Reihenfolge die Befehle Allow und Deny ausgewertet werden.
Ein anderes Beispiel:
AuthType Basic
AuthName A secret Place
AuthUserFile /home/user/html_auth/htpasswd
AuthGroupFile /home/user/html_auth/htgroups
<Limit GET>
Order Allow,Deny
Allow from all
Deny from none
</Limit>
<Limit PUT POST>
Order Allow,Deny
Allow from .ch
Deny from all
require valid-user
</Limit>
|
Alle dürfen die Seiten anschauen (GET). Die Befehle PUT und POST dürfen nur Rechner ausführen,
deren Hostname mit .ch aufhört und die zusätzlich noch den Benutzernamen und das dazugehörige Passwort aus der Passwortdatei
kennen.
Links zum Thema
Hier sind einige Links, die sich mit dem Thema htaccess befassen:
Feedback
Diese Seite ist völlig neu, ich wäre sehr froh, wenn Ihr mir Kommentare, Fehlerberichte, einfach alles zusenden könntet. Meine eMailadresse
ist:
thomasb@trash.net
|