dedlfix: *.img nicht umleiten

Beitrag lesen

Tach!

Nein, der umgeschriebene Request kommt nicht nochmal wieder rein und wird erneut umgeschrieben, /(oder je nach Regeln halt nicht mehr).

Dann würde aber deine Rewrite-Grafik nicht stimmen.

Aber nochmal langsam zu mitschreiben, mir kommen jetzt nämlich Zweifel auf. Variante zwei bekommt einen Request auf eine existierende Datei. Die RewriteRule passt. Die Datei hat eine Länge > 0, -s ist true, negiert ist false. Die anderen Bedingen können das Ergebnis nicht mehr ändern. Wenn sie trotzdem ausgewertet werden, ist da kein Kurzschlussverfahren eingebaut. Die Regel wird ungültig. Ende.

Variante eins bekommt einen Request auf eine existierende Datei. Die erste RewriteRule passt. Die Datei hat eine Länge > 0, -s ist true. Die anderen Bedingen können das Ergebnis nicht mehr ändern. Wenn sie trotzdem ausgewertet werden, ist da kein Kurzschlussverfahren eingebaut. Das Rewriting wird aufgrund des -(dash) und L-Flags beendet.

Wo ist da jetzt mein Denkfehler?

Blieb unbeantwortet.

Zusatzfrage zwei, warum soll bei real existierenden Dateien der Länge 0 die Applikation das Handling übernehmen? "This file intentionally left blank", die Anwendung kann keinen $handler finden und liefert 404. Wer legt denn fest, dass das stets richtig ist?

Vermutlich ist es sinnlos, existierende Dateien mit Null Bytes Länge als Ressourcen anzubieten. Warum sollte man dies tun?

Sicher ist es sinnlos, eine solche Datei auszuliefern. Aber welchen Sinn ergibt es, deswegen die Applikation damit zu belasten? Das macht gefühlt mehr Last als dem Apachen das Ausliefern zu gestatten. Zudem ergibt die leere Datei auszuliefern den Status 200 im Gegensatz zu 404. Das kann durchaus zu Fehlverhalten führen.

Manchmal ist es praktisch, wenn man eine solche Datei hat, in die man bei Bedarf was reinschreiben kann (CSS-Regeln, Javascript, sowas). Natürlich ist es besser, in der Anwendung auf die Leere zu prüfen und den Link nur bei Bedarf einzubauen. Aber manchmal läuft es in der Praxis anders als es in der Theorie am besten ist. Ich sehe es jedenfalls nicht als Aufgabe des Frameworks an, sich meinen Kopf zu zerbrechen und über das Ausliefern von vorhandenen aber leeren Dateien zu entscheiden.

„The following rule tells Apache that if the requested filename exists, simply serve it.“ steht in der .htacces, und ist nicht richtig. Oder zählt eine Datei mit Länge 0 zu nicht existierend? Ich stufe das als unerwartetes und undokumentiertes Verhalten ein.

dedlfix.