Lighttpd envoie des en-têtes incorrects pour le contenu UTF-8

8

Ubuntu / Lighttpd ne sert pas mes fichiers encodés UTF-8 avec l'en- Content-Typetête correct . C'est l'envoi Content-Type: text/htmlplutôt que Content-Type: text/html; charset=UTF-8. Comment configurer Lighttpd pour envoyer les en-têtes corrects?

Je n'ai vu aucun paramètre utile par défaut lighttpd.confet j'ai du mal à trouver des informations dans la documentation .

M. Dudley
la source

Réponses:

8

Le lighttpd.conffichier par défaut semble charger les types MIME à /etc/mime.typespartir d'un script perl:

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

Dans mes /etc/mime.typesmes htmldossiers avaient été définis pour être servis comme text/html. J'ai commenté le include_shellscript perl et ajouté l' entrée mimetype.assign suivante à lighttpd.conf:

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

Je ne sais pas s'il existe une solution plus élégante. En utilisant cette méthode, je devrais copier toutes les entrées /etc/mime.typespour conserver les autres mappages de type MIME.

M. Dudley
la source
5

J'avais le même problème et j'ai finalement trouvé une solution sur un blog

Fondamentalement, c'est une version pimpée du script perl mentionné ci-dessus qui ajoute la déclaration charset = utf-8 à tous les types MIME qui commencent par "text /" Remplacez simplement le script perl et redémarrez lighttpd.

D-zel
la source
Cette solution est plus élégante, la solution Michael Dudley n'est pas satisfaisante car soit elle copie statiquement tout le contenu soit manque de mimetypes pour toutes les données non html…
Jocelyn delalande
0

Il n'est pas plus simple d'ajouter simplement le `; charset = utf-8 string´ pour chaque ligne "text /" dans mimes.conf? Je veux dire:

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