dedlfix: Clean URLs (Abschneiden von Dateinamenserweiterungen)

Beitrag lesen

Hi!

Ist das nicht mit Vorsicht zu genießen, weil es sich bei nicht direkt zu findenden /* irgendeines der /*.* greift und nicht gezielt nur auf eines zu lenken geht?
?? Soll in *.* der erste Stern dasselbe bedeuten wie der zweite?

Nein, es müssten eigentlich zwei verschiedene Jokerzeichen sein, à la x.y. Doch solche benannten Platzhalter suggerieren womöglich, dass man es auf bestimmte Namen festlegen kann. Man kann es höchstens in einen <Location>-Container einsperren. Bei /foo mit /foo.* könnte man annehmen, man legt Multiviews auf genau /foo fest. Stattdessen nimmt es eine beliebige URL und sucht sich eine beliebige Datei zur Vervollständigung (im Rahmen der dokumentierten Regeln, jedoch nicht exakt festlegbar).

Wenn foo.html und foo.jpg im selben Verzeichis liegen, wird nicht „irgendeines“ der beiden gegriffen, sondern das, wessen MIME-Type der Client im HTTP-Accept-Header höhere Priorität gibt – Inhaltsvereinbarung (content negotiation).
Aber man muss ja nicht foo.html und foo.jpg im selben Verzeichis liegen haben.

Ja, aber man muss es beachten, weil es sonst ein zunächst unerklärliches Verhalten geben kann. Deswegen fände ich es besser, diesen Fallstrick beim Empfehlen von MultiViews mit zu erwähnen.

Das hat auch den Vorteil, dass man nichts weiter ändern muss, wenn man aus einer vorher statischen Seite foo.html eine mit serverseitigem Scripting foo.php wird. Sie ist nach wie vor unter http://example.net/path/foo zu erreichen.
Und die verwendete serverseitige Technik geht den Client sowieso nichts an.

Nur den Administrator, der auch die weniger gewünschten Eigenschaften kennen muss.

Lo!