Sven Rautenberg: *.img nicht umleiten

Beitrag lesen

Moin!

-s steht nicht für Symlinks, sondern für Dateien mit Größe > 0. -l steht für Symlinks.

Liest hier denn niemand mehr Doku?

Dazu hätte ich erstmal zu der Erkenntnis kommen müssen, dass meine Annahme nicht richtig ist. Ich lese nicht ständig im Handbuch nach, besonders dann nicht, wenn ich keine Zweifel verspüre. Das war nur einfach nicht genau hingeschaut. Das l hab ich als f interpretiert.

... Variante von Zend: Bei existenten Dateien wird nur exakt einmal gesucht und gefunden. Das macht das Ausliefern von existenten Ressourcen schnell. Rewriting auf die Applikation testet hingegen dreimal.

Deine Variante testet bei Rewrites auf die Applikation auch dreimal. Und bei Zugriffen auf existente Ressourcen ebenfalls.

Viermal, in beiden Fällen. Das Testen auf index.php nach dem Umschreiben musst du mitzählen.

Wann soll das passieren?

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

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?

Zusatzfrage, warum nicht nur .* sondern ^.*$ als Muster?

Keine Ahnung.

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?

Zum "Füllen" von Lücken, sprich "vermeintlich fehlenden index.html-Seiten" braucht man keine Null-Byte-Dateien erzeugen, sondern hat das Rewriting auf die Applikation, die sich damit auseinandersetzt und eine schöne 404-Seite rendern wird.

Grüße Sven