Vorwort
Ich bin ein Neuling in Bezug auf Webserver. Ich richte einen Apache2-Server ein und stöbere gerade in der Dokumentation.
Ich bemerkte , dass die <Directory>, <Location>und <Files>Richtlinien haben jeweils eine entsprechende <*Match>Richtlinie: <DirectoryMatch>, <LocationMatch>und <FilesMatch>jeweils. Der Unterschied an der Oberfläche ist offensichtlich genug:
<*Match>Direktiven nehmen einen regulären Ausdruck als Argument- Nicht übereinstimmende Direktiven verwenden eine einfache Zeichenfolge oder einen Glob im Shell-Stil als Argument.
Seltsamerweise kann den Nicht-Match-Direktiven auch ein regulärer Ausdruck als Argument gegeben werden, wenn ein '~' vorangestellt ist. Daher sollten die folgenden zwei Zeilen identisch sein:
# From the Apache2 docs
<Directory ~ "^/www/[0-9]{3}"> ... </Directory>
<DirectoryMatch "^/www/[0-9]{3}"> ... </DirectoryMatch>
Fragen
Ich würde gerne wissen, ob es subtile oder wichtige Unterschiede gibt, die zu beachten sind, dass die coreDokumente von Apache nicht erwähnt werden. Der <DirectoryMatch>Abschnitt erwähnt einen subtilen Unterschied:
Kompatibilität
Vor 2.3.9 galt diese Direktive implizit für Unterverzeichnisse (wie
<Directory>) und konnte nicht mit dem Zeilenende-Symbol ($) übereinstimmen. In Version 2.3.9 und höher sind nur Verzeichnisse, die dem Ausdruck entsprechen, von den beigefügten Anweisungen betroffen.
Darüber hinaus würde ich gerne wissen:
- Gibt es weitere Unterschiede zwischen den Match- und Nicht-Match-Richtlinien?
- Welche Direktive ist vorzuziehen, wenn ein regulärer Ausdruck erforderlich ist?
- Sind andere Informationen Ihrer Meinung nach relevant?
Anmerkungen
<DirectoryMatch>und<Directory "~">sind auf der gleichen Zusammenführungsebene- Obwohl nicht explizit erwähnt,
<Directory "~">können benannte Gruppen und Rückreferenzen verwendet werden, genau wie<DirectoryMatch>.
<Directory ~und<DirectoryMatchnicht<Directory. Bis Apache 2.3.9<Directory ~war wohl die Obermenge, weil es den$Regex-Anker unterstützte, während<DirectoryMatchdies nicht der Fall war . (Dies könnte auch der Grund gewesen sein, warum die Empfehlung zur VerwendungDirectoryMatchin den früheren Dokumenten entfernt wurde?)