Dennis: <Directory ".svn">

Beitrag lesen

Hi Sylvanus,

<DirectoryMatch "^/.*/.svn/">

Du kannst übrigens auch ".svn" schreiben, das funktioniert ebenfalls prima - nutze ich in der Form auch auf Live-Servern.

Nur gefällt mir das nicht wirklich. So einen Regex bei *jeder* Apache-Anfrage durchzuführen, ist doch ein mordsmäßiger Perfomancebremser. Gut, er wird nur einmal, bei Serverstart, kompiliert, aber warum gibt es keine einfachere Möglichkeit, Apache beizubringen, dass alles, was unterhalb eines Verzeichnisses mit dem Namen ".svn" ist, verboten ist?

Ich vermute mal, dass das daran liegt, dass der Apache stets ganze Pfade zu den Verzeichnissen und nicht bloß die Verzeichnisnamen betrachtet. Das muss er auch, denn /var/www/test/abc und /var/www/test2/abc sind nun mal unterschiedliche Verzeichnisse, auch wenn sie den gleichen Namen tragen! Un man soll ja für unterschiedliche Verzeichnisse auch unterschiedliche Konfigurationen vergeben können. Mit <Directory> kannst du ja jedes einzelne Verzeichnis absolut adressieren und entsprechende Konfigurationen festlegen.

In dem Moment wo du mehrere Verzeichnisse mit derselben Konfiguration belegen willst, sind die absoluten Pfade zu den Verzeichnissen natürlich alle unterschiedlich, somit musst du (wenn du nicht alle Verzeichnisse einzeln auflisten willst) zwangsläufig auf reguläre Ausdrücke umsteigen. Und ob du jetzt in der Konfigurationsdatei ".svn" schreibst und Apache da einen regulären Ausdruck draus macht um den gegen den Verzeichnispfad zu prüfen, oder ob du direkt den regulären Ausdruck notierst macht effektiv von der Performance her keinen Unterschied.

Zumal letzteres wohl auch Missverständnissen bzw. ungewollten Fehlkonfigurationen vorbeugt (schließlich musst du reguläre Ausdrücke explizit angeben, entweder mit <DirectoryMatch> oder mit <Directory ~>), weshalb ich gut nachvollziehen kann, dass sich die Apache Entwickler hierfür entschieden haben.

Viele Grüße,
  ~ Dennis.