Mastershrimp: .htaccess: Eigenes 404-Doc nur für nicht-Bilddatei-Anfragen

Beitrag lesen

Moin,

ich arbeite gerade an der 404-Fehler-Verarbeitung meines CMS. Das System generiert für 404-Fehler eine eigene Seite - aus Speed-Gründen soll es das aber nur für "sichtbare" Anfragen machen, sprich, wenn die Anfrage nach Bildern und ähnlichen Objekten fehlschlägt, soll die Seite nicht gesendet werden sondern einfach die Standard-Apache-404-Seite.

Da ich mod_rewrite verwende und das scheinbar vor den ErrorDocument-Direktiven ausgeführt wird, muss ich das ganze auf RewriteCond-Ebene lösen. Hier mein Ansatz:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !.(gif|jpe?g|png|ico|bmp|js|swf)$ [nocase]
RewriteRule ^(.*)$ index.php5?page=$1&%{QUERY_STRING}

Was die RewriteCond's tun sollen:
1. "Sende die Datei falls die Anfrage einer real auf dem Server existierenden Datei galt" (kein Umweg über index.php5 also)
2. Gleiches Spiel mit real existierenden Ordnern
3. Wende die RewriteRule an sofern die Anfrage nicht auf ".gif", ".jpeg", ".png", ... endet. Ist dies der Fall, wertet diese RewriteCond zu "false" aus und die RewriteRule wird nicht angewendet. An diesem Punkt ist auch bereits klar, dass die Bild-Datei nicht existiert (sonst hätte Cond#1 gegriffen)

Das ganze funktioniert auch für Anfragen von Dateien ausm Wurzelverzeichnis (meinedomain.de/gibtsnicht.jpg). Sobald die angefragte Datei in nem Unterordner liegt, klappts nicht mehr (meinedomain.de/ordner/gibtsnicht.jpg). Da kommt dann wieder die 404-Seite meines CMS, die Cond#3 greift also irgendwie nicht.

Habs auch schon mit
RewriteCond %{REQUEST_FILENAME} !^.+.(gif|jpe?g|png|ico|bmp|js|swf)$ [nocase]
versucht, aber ohne Erfolg.

Wo ist mein Fehler? Das Problem tritt sowohl auf meinem Produktiv-System-Server als auch lokal auf.

Vielen Dank schonmal und viele Grüße

Mastershrimp