8

Ubuntu/Lighttpd is not serving my UTF-8 encoded files with the correct Content-Type header. It's sending Content-Type: text/html rather than Content-Type: text/html; charset=UTF-8. How do I configure Lighttpd to send the correct headers?

I didn't see any useful settings in the default lighttpd.conf and am having trouble finding information in the documentation.

sourcenouveau
  • 489
  • 1
  • 5
  • 18

3 Answers3

8

The default lighttpd.conf file seems to load MIME types from /etc/mime.types using a perl script:

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

In my /etc/mime.types my html files had been set to be served as text/html. I commented out the include_shell perl script and added the following mimetype.assign entry to lighttpd.conf:

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

I'm not sure if there's a more elegant solution. Using this method I would need to copy in all of the entries in /etc/mime.types to retain the other MIME type mappings.

sourcenouveau
  • 489
  • 1
  • 5
  • 18
5

I was having the very same problem and finally found a solution on a blog

Basically it's a pimped version of above mentioned perl script that adds the charset=utf-8 declaration to all mime-types that start with "text/" Just replace the perl script and restart lighttpd.

D-zel
  • 61
  • 1
  • 1
  • This solution is more elegant, the Michael Dudley solution is not satisfying as its either copying statically all the content or lacking mimetypes for all non-html data … – Jocelyn delalande Mar 13 '13 at 09:23
0

It isn't cleaner to just add the `; charset=utf-8 string´ for each "text/" line in mimes.conf? I mean like:

  ".css"          =>      "text/css; charset=utf-8",
  ".html"         =>      "text/html; charset=utf-8",
  ...
Dave M
  • 4,494
  • 21
  • 30
  • 30