Zugriffssteuerung mittels der Datei .htaccess
Basis Direktiven
Die Basis Direktiven sind ständig verfügbare Kernfunktionen des Apache HTTP Servers. Sie werden vom HTTP-Server immer dann ausgewertet, wenn in der Konfigurationsdatei des Servers nicht mit AllowOverride None das Setzen benutzereigner Direktiven komplett verboten wird.Folgende Direktiven können im benutzereigenen .htaccess-File gesetzt werden:
- AcceptPathInfo
- AccessFileName
- AddDefaultCharset
- AddOutputFilterByType
- AuthName
- AuthType
- CGIMapExtension
- ContentDigest
- DefaultType
- EnableMMAP
- EnableSendfile
- FileETag
- <Files>
- <FilesMatch>
- ForceType
- <IfDefine>
- <IfModule>
- <Limit>
- <LimitExcept>
- LimitRequestBody
- LimitRequestLine
- LimitXMLRequestBody
- Options
- Require
- RLimitCPU
- RLimitMEM
- RLimitNPROC
- Satisfy
- ScriptInterpreterSource
- ServerSignature
- SetHandler
- SetInputFilter
- SetOutputFilter
Die Direktiven <Files>, <FilesMatch>, ForceType, <IfModule> werden in diesem Skript etwas ausführlicher erläutert.
<Files>
Syntax
<Files filename > ... </Files>Mit <Files> und </Files> ist es möglich, Direktiven für bestimmte Dateien abhängig von ihrem Dateinamen zu vereinbaren. Das Argument filename benennt die Dateien, für die die nachfolgenden Einstellungen gelten sollen, wobei Wildcards ? und * erlaubt sind; d.h das Fragezeichen ( ? ) steht für ein beliebieges Zeichen, der Stern ( * ) für eine beliebige Zeichenkette. Regulären Ausdrücken ist die Tilde ( ~ ) voranzustellen.
Beispiele
<Files "*\.gz" > . . . </Files> |
betroffen sind alle Dateien, die mit .gz enden |
<Files ~ "\.(gz|GZ|gzip|GZIP|Z)$"
> . . . </Files> |
betroffen sind alle Dateien, die mit .gz, .GZ, .gzip, .GZIP oder .Z enden |
<FilesMatch>
Syntax
<FilesMatch filename > ... </FilesMatch>Wie <Files> und </Files> mit dem Unterschied, dass reguläre Ausdrucke direkt akzeptiert werden (also ohne Angabe von ~).
Beispiel
<FilesMatch "\.(gz|GZ|gzip|GZIP|Z)$"
> . . . </FilesMatch> |
betroffen sind alle Dateien, die mit .gz, .GZ, .gzip, .GZIP oder .Z enden |
ForceType
Syntax
ForceType media typeDie Direktive ForceType im .htaccess-File bewirkt, dass alle Dateien des Verzeichnisses (und sämtlicher Unterverzeichnisse) vom HTTP-Server so behandelt werden, als seien sie vom angegebenen Typ media type.
Beispiel 1
Z.B. ist die Vereinbarung
ForceType application/octet-stream |
dann sinnvoll, wenn alle Dateien eines Verzeichnisses nicht angezeigt sondern lediglich zum Downloaden freigegeben werden sollen.
Beispiel 2
<FilesMatch "\.(gz|GZ|gzip|GZIP|Z)$"
> ForceType application/octet-stream </FilesMatch> |
Alle Dateien, die mit .gz, .GZ, .gzip, .GZIP oder .Z enden, werden nicht angezeigt, sondern zum Downloaden freigegeben.
<IfModule>
Syntax
<IfModule [!]module-name > ... </IfModule>Die Klammer <IfModule test> ... </IfModule> wird benutzt, um Direktiven abhängig von den im HTTP-Server installierten Modulen setzen zu können.
Der Module-Name kann angegeben werden als
- module-name oder
- !module-name
In der ersten Form werden die nachfolgenden Direktiven abgearbeitet, wenn das Module Bestandteil des Apache-Servers ist, in der zweiten Form genau dann, wenn es nicht Bestandteil des Apache-Servers ist.
Beispiel
Im .htaccess-File wird vereinbart
<IfModule mod_auth.c> AuthName " 'Interna' " AuthType Basic AuthUserFile /cgi/htdocs/users/test/.htpasswd require valid-user </IfModule> <IfModule !mod_auth.c> RedirectMatch ^/~test/Interna/ http://cgi.tu-harburg.de/~test/message.html </IfModule> |
Wenn das Module mod_auth.c im HTTP-Server integriert ist, wird das Verzeichnis durch Benutzernamen und Passwort geschützt (s. Kapitel AuthConfig), anderenfalls erfolgt eine Umlenkung auf die URL http://cgi.tu-harburg.de/~test/message.html. Mehr zur Direktive Redirect finden Sie im Apache Manual.