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.
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/usr/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
|