Der Martin: rewriteRule - lädt keine Bilder, ignoriert datei.css

Beitrag lesen

Hallo,

... den bisherigen Hinweisen zu diesem Thema zufolge möchte ich ergänzend zum obigen hinzufügen: dass, wenn die index.html geladen wurde der Fall:
angefragte RequestUri ist ein Verzeichnis auf dem Server, daher wird die Anfrage durchgelassen und bedient - sprich: das Verzeichnis wird aufgerufen und die in der Serverkonfiguration standardmäßig eingestellte "index.html" wird am Bildschirm des anfragenden Clients gezeig - - - leider nur ohne Formatierung der .css Datei, die im Header der "index.html" mit einer relativen Pfadangabe referenziert ist - usw.

ja, und warum das so ist, hat MudGuard doch schon erklärt.
Nochmal ausführlicher.

1. Request: /verzeichnis/          (wir nehmen an, /verzeichnis sei *wirklich* ein Verzeichnis)
Hier trifft deine erste Rewrite Rule zu:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -d

RewriteRule ^.*$ - [PT,L]

Der Request wird also nicht umgeschrieben, sondern unverändert durchgereicht, das Default-Dokument aus /verzeichnis ausgeliefert.  
  
2\. Request: /verzeichnis/style.css     (eine beliebige eingebundene CSS-Ressource)  
Die erste Rewrite Rule passt nicht, weil /verzeichnis/style.css kein Verzeichnis ist.  
Die zweite passt aber, \*weil\* /verzeichnis/style.css kein Verzeichnis ist:  

> ~~~apache

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-d  

> RewriteRule ^verzeichnis.*$ http://.... [R=307,L]

Der Client wird also aufgefordert, sich die gesuchte Ressource woanders zu holen, wo sie vermutlich nicht existiert.

Nebenbei bemerkt ist es überflüssig, den Ausdruck %{DOCUMENT_ROOT}/ in der RewriteCond zu erwähnen, weil %{REQUEST_URI} immer vom Document Root aus gilt.

So long,
 Martin

--
Der Dienstweg ist die Abkürzung vom Holzweg zur Sackgasse.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(