Forum: PC-Programmierung Apache und DirectoryMatch


von Elvis (Gast)


Lesenswert?

Hi,

ich habe in meiner Apache-Konfiguration einen Directory- und einen 
DirectoryMatch-Eintrag:

<Directory /home/www/outer>
...
</Directory>

<DirectoryMatch "/home/www/outer/.inner/*">
...
</DirectoryMatch>

Für alle Aufrufe innerhalb des Ordners ".inner" (also beliebig viele 
Unterordner und/oder Dateien), soll auch noch der DirectoryMatch-Eintrag 
gelten. Die beiden Einträge funktionieren auch wie erwartet.

Ich würde jetzt aber gerne den Ordner "outer" variabel machen, so das 
die beiden Einträge z.B. auch für folgende Directories gelten:
/home/www/test/.inner/...
/home/www/einergehtnoch/.inner/...
etc.

Wie lässt sich das unter Apache 2.2 bewerkstelligen?

Viele Grüße
Elvis

von Daniel A. (daniel-a)


Lesenswert?

Elvis schrieb:
> Die beiden Einträge funktionieren auch wie erwartet.

Das bezweifle ich stark. Gemäss der Dokumentation ist bei directory 
match ein normaler regex verlangt. Der String "/home/www/outer/.inner/*" 
trifft auf alle Pfade zu, die /home/www/outer/.inner enthalten (wobei 
für den punkt jedes zeichen passt), egal was davor oder danach kommt. 
Grund dafür ist das der stern heisst, das 0 bis unentlich mal des '/' 
zeichen da sein müss. Den start repräsentiert man mit dem '^' zeichen, 
das ende mit '$', wurden hier aber nicht benutzt. Ich empehle dir dich 
mit regulären ausdrücken zu befassen.

Doku:
https://httpd.apache.org/docs/2.2/de/mod/core.html#directorymatch

Regexp tester: https://regex101.com/#javascript

Elvis schrieb:
> Ich würde jetzt aber gerne den Ordner "outer" variabel machen, so das
> die beiden Einträge z.B. auch für folgende Directories gelten:

Meinst du so:
1
<DirectoryMatch "^/home/www/(outer|test|einergehtnoch)/\.inner/">

Oder so: (belibiges verzeichnis)
1
<DirectoryMatch "^/home/www/[^/]+/\.inner/">

Oder so: (belibiges (unter)verzeichnis)
1
<DirectoryMatch "^/home/www/.+/\.inner/">

Oder so: (belibiges optionales (unter)verzeichnis)
1
<DirectoryMatch "^/home/www/(.+/)?\.inner/">

Oder so: (egal wo .inner ist)
1
<DirectoryMatch "/\.inner/">

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.