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:

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 type

Die 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.