mod_rewrite: dynamische Dateiwahl
Cheatah
- webserver
Hi,
folgendes Szenario: Im URI-Bereich /foo/bar/ soll ein Request /foo/bar/qaz/baz.xy auf die Datei .../foo/qaz/baz.xy geleitet werden, sofern diese existiert, andernfalls auf .../foo/qaz/bar/baz.xy. Eine vorherige RewriteRule hat bereits ein Umschreiben auf /foo/qaz/baz.xy?section=bar vorgenommen. Bis hierhin noch kein Problem:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} section=([^&]+)
RewriteRule (.+) %1/$1 [L,QSA]
So weit, so gut. Nun möchte ich aber auch den Fall abfangen, dass _beide_ Dateien nicht existieren - dann soll es einen 404 geben. Obiger Code liefert mir dann einen Internal Server Error ("maximum number of internal redirects reached"), der mir überhaupt nicht zusagt. Meine Recherchen in der Apache-Doku brachten insbesondere folgende Versuche zutage:
RewriteCond %{IS_SUBREQ} false (erfolgfrei, unabhängig vom [L]-Schalter handelt es sich wohl nicht um einen Subrequest)
RewriteRule (.+) %1/$1 [N,QSA] (liefert zwar einen 404, aber mit dem Text "The requested URL /foo/qaz/bar/bar/bar/[...]/baz.xy was not found on this server", mit vermutlich so vielen "/bar/", wie das Redirect-Limit erlaubt)
Wie kann ich dies optimieren?
Cheatah