Lighttpd sendet falsche Header für UTF-8-Inhalte

8

Ubuntu / Lighttpd liefert meine UTF-8-codierten Dateien nicht mit dem richtigen Content-TypeHeader. Es sendet Content-Type: text/htmleher als Content-Type: text/html; charset=UTF-8. Wie konfiguriere ich Lighttpd so, dass die richtigen Header gesendet werden?

Ich habe in der Standardeinstellung keine nützlichen Einstellungen gesehen lighttpd.confund habe Probleme, Informationen in der Dokumentation zu finden .

M. Dudley
quelle

Antworten:

8

Die Standarddatei lighttpd.confscheint MIME-Typen /etc/mime.typesmithilfe eines Perl-Skripts zu laden :

include_shell "/usr/share/lighttpd/create-mime.assign.pl"

In meinen /etc/mime.typesmeine htmlDateien gesetzt hatten als serviert werden text/html. Ich habe das include_shellPerl-Skript auskommentiert und den folgenden mimetype.assign- Eintrag hinzugefügt lighttpd.conf:

mimetype.assign = ( ".html" => "text/html; charset=utf-8" )

Ich bin mir nicht sicher, ob es eine elegantere Lösung gibt. Mit dieser Methode müsste ich alle Einträge kopieren /etc/mime.types, um die anderen MIME-Typzuordnungen beizubehalten.

M. Dudley
quelle
5

Ich hatte das gleiche Problem und fand schließlich eine Lösung in einem Blog

Grundsätzlich handelt es sich um eine gepimpte Version des oben genannten Perl-Skripts, die allen MIME-Typen, die mit "text /" beginnen, die Deklaration charset = utf-8 hinzufügt. Ersetzen Sie einfach das Perl-Skript und starten Sie lighttpd neu.

D-zel
quelle
Diese Lösung ist eleganter, die Michael Dudley-Lösung ist nicht zufriedenstellend, da sie entweder den gesamten Inhalt statisch kopiert oder keine Mimetypen für alle Nicht-HTML-Daten enthält…
Jocelyn delalande
0

Es ist nicht sauberer, nur das `hinzuzufügen; charset = utf-8 string´ für jede "text /" Zeile in mimes.conf? Ich meine wie:

  ".css"          =>      "text/css; charset=utf-8",
  ".html"         =>      "text/html; charset=utf-8",
  ...
Paul Bernal
quelle