OT: apache config frage: feststellen ob ein Verzeichnis existiert
Hallo allerseits, ich hab' da mal eine apache-Frage: Kann ich mit mod_rewrite prüfen, ob ein Verzeichnis existiert und ggf. eine NOT-FOUNHD-Seite anzeigen? also in etwa so: RewriteEngine On RewriteBase /xyz/ RewriteRule ^/?([^/]+)/(.*) /xyz/$1/src/$2 [QSA] RewriteRule ^/?([^/]+)$ /xyz/$1/src/ [QSA] RewriteRule ^/?$ /xxx/error/HTTP_NOT_FOUND.php was ich bezwecke ist folgendes die URL www.host.de/xyz/abc/foobar soll auf /..../abc/src/foobar unmgeschrieben werden Das funktioniert auch soweit, Aber ich möchte nicht jeden beliebige Pfad "abc" akzeptiert werden sondern nur solche, für dies es das Verzeichnis /xyz/$1/src/ existiert. Alle anderen Pfade sollten zur NOT-FOUND-Seite gehen. also etwa so (Pseudocode): RewriteRule ^/?([^/]+)/(.*) IF DIRECTORY-EXISTS "/xyz/$1/src/" THEN /xyz/$1/src/$2 [QSA] ELSE TTP_NOT_FOUND.php Klar???? Wer kann mir einen Tip geben, wie man das macht. Danke & schönbe Ostern Jürgen -- Dr.rer.nat. Jürgen Vollmer, Am Rennbuckel 21, D-76185 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de ------------------------------------------------------------------------------- Diese EMail ist elektronisch mittels GPG / PGP signiert. Diese elektronische Unterschrift ist in einem EMail-Anhang enthalten. Leider kann die Signatur ohne die Installation entsprechender Programme weder geprüft noch angezeigt werden. Mehr dazu unter: http://www.gnupg.org oder auch http://www.pgpi.org -------------------------------------------------------------------------------
Hallo Jürgen, Am 04.04.2015 um 18:12 schrieb Dr. Jürgen Vollmer:
Hallo allerseits,
ich hab' da mal eine apache-Frage: Kann ich mit mod_rewrite prüfen, ob ein Verzeichnis existiert und ggf. eine NOT-FOUNHD-Seite anzeigen?
also in etwa so: ...
Das funktioniert auch soweit, Aber ich möchte nicht jeden beliebige Pfad "abc" akzeptiert werden sondern nur solche, für dies es das Verzeichnis /xyz/$1/src/ existiert.
Alle anderen Pfade sollten zur NOT-FOUND-Seite gehen.
also etwa so (Pseudocode):
RewriteRule ^/?([^/]+)/(.*) IF DIRECTORY-EXISTS "/xyz/$1/src/" THEN /xyz/$1/src/$2 [QSA] ELSE TTP_NOT_FOUND.php
was ist mit den Pseudo-Condition -Patterns (-d z.B., Beschreibung: '*-d*' (is *d*irectory) Treats the /TestString/ as a pathname and tests whether or not it exists, and is a directory.) Damit solltest Du als Bedingung den zusammengebastelten Zielstring prüfen können. Ok, ist das mit dem ELSE-Zweig wichtig? Oder ggf. mit einer abschließenden Regel für nicht passende Patterns zu erschlagen? Sonst ggf. einfach nochmal dieselbe Bedingung verneinen... Ich habe die Funktionen nicht getestet, klingt für mich aber passend zu Deiner Frage. Gruß Martin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Sorry, das war etwas zu kurz: Am 04.04.2015 um 23:50 schrieb Martin Hofius:
Hallo Jürgen,
... Alle anderen Pfade sollten zur NOT-FOUND-Seite gehen.
also etwa so (Pseudocode):
RewriteRule ^/?([^/]+)/(.*) IF DIRECTORY-EXISTS "/xyz/$1/src/" THEN /xyz/$1/src/$2 [QSA] ELSE TTP_NOT_FOUND.php
was ist mit den Pseudo-Condition -Patterns (-d z.B., Beschreibung: '*-d*' (is *d*irectory) Treats the /TestString/ as a pathname and tests whether or not it exists, and is a directory.)
das Ganze gehört dann in die RewriteCond-Direktive, die der RewriteRule-Direktive vorausgeht. Sozusagen das IF als umschließende Bedingung für RewriteRule... Ist soweit auch in der apache-Doku unter z.B. http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html beschrieben. Gruß Martin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (2)
-
Dr. Jürgen Vollmer
-
Martin Hofius