Title: Konfigurationsabschnitte
Die Direktiven in den Konfigurationsdateien können sich auf den gesamten
Server oder nur auf bestimmte Verzeichnisse, Dateien, Hosts oder URLs
beziehen. In den folgenden Abschnitten wird beschrieben, wie mit den
Containern der Konfigurationsabschnitte oder .htaccess-Dateien
der Bereich anderer Konfigurationsdirektiven geändert wird.
Es gibt zwei Grundtypen von Containern. Die meisten von ihnen werden für
jede Anfrage ausgewertet. Die enthaltenen Direktiven werden nur für die Anfragen
angewendet, für die der Containern zuständig ist. Die Container
Die httpd-Befehlszeile angegeben wird. Bei der
folgenden Konfiguration werden beispielsweise alle Anfragen nur dann zu einer
anderen Site umgeleitet, wenn der Server mit den Befehl
httpd -DClosedForNow gestartet wird:
Redirect / http://otherserver.example.com/
</IfDefine>
Bei der Direktive
Im folgenden Beispiel wird die
MimeMagicFile conf/magic
</IfModule>
Sowohl !-Zeichen
vorangestellt wird. Außerdem können diese Abschnitte verschachtelt
werden, um komplexere Einschränkungen zu erreichen.
Die am häufigsten benutzten Konfigurationsabschnitts-Container sind
diejenigen, die die Konfiguration bestimmter Bereiche des Dateisystems oder des
Webbereichs ändern. Dabei ist der Unterschied zwischen diesen beiden Bereichen
wichtig. Das Dateisystem ist das Abbild der Festplatte, wie es das Betriebssystem
sieht. Bei einer Standardinstallation befindet sich der Apache-Server beispielsweise
im Verzeichnis /usr/local/apache2 des Unix-Dateisystems oder
im Verzeichnis "c:/Program Files/Apache Group/Apache2" des
Windows-Dateisystems. (Beachten Sie, dass auch unter Windows immer
einfache Schrägstriche als Trennzeichen im Pfad benutzt werden sollten.) Der
Webbereich ist im Gegensatz dazu die Ansicht der Site, so wie sie der Webserver
darstellt und der Client sie sieht. Der Pfad /dir/ im Webbereich
entspricht daher dem Pfad /usr/local/apache2/htdocs/dir/ im
Dateisystem einer standardmäßigen Apache-Installation unter Unix. Der Webbereich
muss direkt dem Dateisystem zugeordnet werden, da Webseiten dynamisch
über Datenbanken oder andere Bereiche erzeugt werden können.
Die Match-Entsprechungen
wenden Direktiven auf Teile des Dateisystems an. Direktiven eines
.htaccess-Dateien erreicht
werden. In der folgenden Konfiguration stehen beispielsweise die
Verzeichnisindizes für das Verzeichnis /var/web/dir1 und alle
seine Unterverzeichnisse zur Verfügung.
Options +Indexes
</Directory>
Die private.html, egal, wo sie sich befindet.
Order allow,deny
Deny from all
</Files>
Um Dateien aus einem bestimmten Bereich des Dateisystems anzusprechen,
können /var/web/dir1/private.html,
/var/web/dir1/subdir2/private.html,
/var/web/dir1/subdir3/private.html sowie auf alle anderen Instanzen
von private.html, die im Bereich des Verzeichnisses
/var/web/dir1/ liegen.
<Files private.html>
Order allow,deny
Deny from all
</Files>
</Directory>
Die Match-Entsprechungen
ändern dagegen die
Konfiguration für Inhalte im Webbereich. Die folgende Konfiguration verhindert
beispielsweise jeden URL-Pfad, der mit /private beginnt.
Insbesondere betrifft er Anfragen nach
http://yoursite.example.com/private,
http://yoursite.example.com/private123 und
http://yoursite.example.com/private/dir/file.html sowie andere
Anfragen, die mit /private beginnen.
Order Allow,Deny
Deny from all
</Location>
Eine Direktive aus dem server-status muss im Dateisystem nicht vorhanden
sein.
SetHandler server-status
</Location>
Die Direktiven aus den *stimmt mit
jeder Zeichenfolge überein, das ?-Zeichen steht für ein einzelnes
Zeichen und [seq] steht für jedes Zeichen aus
seq. Der Schrägstrich (/) stimmt mit keinem
Jokerzeichen überein, er muss explizit angegeben werden.
Werden noch anpassungsfähigere Vergleiche benötigt, gibt es für jeden
Container eine Match-Entsprechung:
Ein reiner Jokerzeichenabschnitt, der die Konfiguration aller Benutzerverzeichnisse ändert, könnte folgendermaßen aussehen:
Options Indexes
</Directory>
Mit Abschnitten mit regulären Ausdrücken kann der Zugriff auf viele Arten von Bilddateien auf einmal verwehrt werden:
Order allow,deny
Deny from all
</FilesMatch>
Die Entscheidung für Dateisystem- oder Webbereichs-Containern fällt relativ
leicht. Werden Direktiven auf Objekte im Dateisystem angewendet, werden immer
Es ist wichtig, niemals einen
Order allow,deny
Deny from all
</Location>
Bei einer Anfrage nach http://yoursite.example.com/dir/
funktioniert das. Was geschieht aber, wenn das Dateisystem Groß- und
Kleinschreibung unterscheidet? In dem Fall kann die Einschränkung durch
Anforderung von http://yoursite.example.com/DIR/ leicht
umgangen werden. Die
Dateisysteme, bei denen Groß- und
Kleinschreibung nicht unterschieden wird, sind aber nicht das einzige Problem.
Es gibt viele Möglichkeiten, mehrere Webbereiche der gleichen Position im
Dateisystem zuzuordnen. Deshalb sollte möglichst immer
der Dateisystem-Container benutzt werden.
Eine Ausnahme von dieser Regel gibt es allerdings. Die Lösung,
Einschränkungen in einen <Location/>-Abschnitt zu setzen,
ist absolut sicher, weil dieser Abschnitt unabhängig von der URL auf alle Anfragen
angewendet wird.
Der
Die cnn.com zugegriffen wird.
Order allow,deny
Deny from all
</Proxy>
Darüber, welche Direktiven in welchen Konfigurationsabschnitten
zulässig sind, informieren die Hinweise zum Kontext der Direktive.
Alles, was in
- Die
AllowOverride -Direktive funktioniert nur inDirectory -Abschnitten. - Die Optionen
FollowSymLinksundSymLinksIfOwnerMatchfunktionieren nur inDirectory -Abschnitten oder in.htaccess-Dateien. - Die
Options -Direktive kann nicht inFiles - undFilesMatch -Abschnitten benutzt werden.
Die Konfigurationsabschnitte werden in einer ganz bestimmten Reihenfolge angewendet. Da es wichtige Auswirkungen haben kann, wie Konfigurationsdirektiven interpretiert werden, ist es wichtig zu wissen, wie das funktioniert.
Die Reihenfolge ist folgende:
-
Directory (mit Ausnahme regulärer Ausdrücke) und.htaccesssimultan (falls zulässig wird.htaccessüberschriebenDirectory ) DirectoryMatch (und<Directory ~>)Files undFilesMatch simultanLocation undLocationMatch simultan
Getrennt vom <Directory /var/web/dir> wird beispielsweise vor
<Directory
/var/web/dir/subdir> bearbeitet. Gelten mehrere
Abschnitte innerhalb von
Wird die Anfrage von
Spätere Abschnitte überschreiben frühere.
Aliases und
DocumentRoots für die Zuordnung von URLs benutzt werden)
wird eine <Location>/
<LocationMatch>-Sequenz durchgeführt. Die Ergebnisse dieser Sequenz werden
vollständig verworfen, nachdem die Umwandlungsphase abgeschlossen wurde.
Es folgt ein konstruiertes Beispiel, das die Reihenfolge der Vermischung zeigt. Werden alle Direktiven für die Anfrage angewendet, geschieht dies in der Reihenfolge A > B > C > D > E.
E
</Location>
<Files f.html>
D
</Files>
<VirtualHost *>
<Directory /a/b>
B
</Directory>
</VirtualHost>
<DirectoryMatch "^.*b$">
C
</DirectoryMatch>
<Directory /a/b>
A
</Directory>
In dem nächsten, etwas konkreteren Beispiel befinden sich zwar alle
Zugriffsbeschränkungen in
Order deny,allow
Allow from all
</Location>
# Hoppla! Dieser <Directory>-Abschnitt bleibt wirkungslos
<Directory />
Order allow,deny
Allow from all
Deny from badguy.example.com
</Directory>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
