dedlfix: Problem mit den File Extensions / .htaccess

Beitrag lesen

Tach!

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}? -f
RewriteRule ^(.*)$ $1.html

Ja. Und wo ist das (hier) erforderliche und von dedlix geforderte "Last" am Ende der RewriteRule?

Das "Last" habe ich nicht gefordert.

mod_rewrite arbeitet so, dass der Request umgeschrieben wird und dann erneut durch die Maschinerie des Apachen läuft, inklusive der .htaccess, durch die er bereits lief. Deshalb muss man es ausschließen, dass vorhandene Dateien erneut umgeschrieben werden.

"Vorhandene Dateien ausschließen" ist nicht gleichzusetzen mit "den Umschreibprozess komplett zu stoppen". Letzteres geht erst seit 2.4 mit dem Flag END. Aber das hilft nichts, wenn man einen anderen Fehler im System hat. Dazu gleich mehr.

"Last" beendet nicht das Umschreiben, sondern veranasst nur, dass im aktuellen Durchlauf keine weiteren Regeln beachtet werden. Wenn das die einzige Regel in der Datei ist, bringt "Last" genau gar nichts. Der umgeschriebene Request geht auch mit "Last" erneut durch die interne Requestverarbeitung des Apachen. END würde das verhindern.

Der Fehler wird vielmehr syntaktischer Natur sein. Zum einen fehlt dem -f die Negation, und dann ist da noch ein Fragezeichen zu viel.

Das END wird aber kein (alleiniger) Ersatz für RewriteCond sein, denn man muss ja trotzdem ausschließen, dass Grafiken und andere physisch vorhande Dateien nach .html umgeschrieben werden. Mit den beiden RewiteCond (wenn man sie denn richtig schriebe) kommt man jedenfalls ohne END und L aus.

dedlfix.