Christian Kruse: Probleme mit !-f, !-d

Hallo alle,

ich habe ein kleines Problem mit mod_rewrite, vielleicht kann
ja mal jemand schauen, was da jetzt los ist. Folgende Regel
soll, falls eine Datei oder ein Verzeichnis mit dem
geforderten Namen nicht vorhanden ist, umleiten auf ein
Script:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?path/(.*) /cgi-bin/script/$1 [L]

Leider bekomme ich nur einen 404. Aendere ich die Regel
hingegen in

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* %{REQUEST_URI} [C]
RewriteRule ^/?path/(.*) /cgi-bin/script/$1 [L]

funktioniert alles bestens -- mit der Ausnahme, dass in
PATH_INFO nun der Pfad doppelt drin steht. Was ist da jetzt
falsch?

Gruesse,
 CK

--
Ganz gleich, welchen Weg ich wähle, ich kehre heim.
  1. Moin!

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/?path/(.*) /cgi-bin/script/$1 [L]

    Ich habe unter Windows und Linux mit folgendem Konstrukt Erfolg gehabt:

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-s
    prüft auf Abwesenheit einer mehr als 0 Byte langen Datei.

    mit der Ausnahme, dass in
    PATH_INFO nun der Pfad doppelt drin steht. Was ist da jetzt
    falsch?

    Bei Operationen mit mod_rewrite setze ich immer darauf, dass die ursprünglich abgefragte URL vom Modul in die CGI-Umgebung als SCRIPT_URL eingebracht wird.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)