Lighttpd mengirimkan header yang salah untuk konten UTF-8

8

Ubuntu / Lighttpd tidak menayangkan file yang disandikan UTF-8 saya dengan Content-Typeheader yang benar . Ini mengirim Content-Type: text/htmldaripada Content-Type: text/html; charset=UTF-8. Bagaimana cara mengkonfigurasi Lighttpd untuk mengirim header yang benar?

Saya tidak melihat pengaturan yang berguna di default lighttpd.confdan saya kesulitan menemukan informasi dalam dokumentasi .

M. Dudley
sumber

Jawaban:

8

File default lighttpd.conftampaknya memuat tipe MIME dari /etc/mime.typesmenggunakan skrip perl:

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

Dalam file saya /etc/mime.typessaya htmltelah diatur untuk dilayani sebagai text/html. Saya berkomentar include_shellskrip perl dan menambahkan entri mimetype.assign berikut ke lighttpd.conf:

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

Saya tidak yakin apakah ada solusi yang lebih elegan. Dengan menggunakan metode ini saya perlu menyalin semua entri /etc/mime.typesuntuk mempertahankan pemetaan tipe MIME lainnya.

M. Dudley
sumber
5

Saya mengalami masalah yang sama dan akhirnya menemukan solusi di blog

Pada dasarnya ini adalah versi pimped dari skrip perl yang disebutkan di atas yang menambahkan charset = utf-8 deklarasi ke semua mime-type yang dimulai dengan "text /" Cukup ganti skrip perl dan restart lighttpd.

D-zel
sumber
Solusi ini lebih elegan, solusi Michael Dudley tidak memuaskan karena baik menyalin secara statis semua konten atau kekurangan mimetipe untuk semua data non-html ...
Jocelyn delalande
0

Tidak bersih hanya dengan menambahkan `; charset = utf-8 string´ untuk setiap baris "text /" di mimes.conf? Maksud saya seperti:

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