Apache-2.4

如何在 Apache 中配置 UTF-8 Content-Type 標頭?

  • January 29, 2020

我的網站有 UTF-8 編碼的頁面和其他內容。對於 HTML,在元標記中設置編碼是沒有問題的。但是,我也有未正確顯示的 UTF-8 編碼的原始文本文件,例如顯示為×. 我考慮在此類文件的開頭添加字節順序標記,但我不希望這樣做,因為它們並不總是得到很好的支持。我按照其他問題中的說明進行操作,但沒有效果。這是 HTTP 響應標頭:

HTTP/1.1 200 OK
Date: Sat, 12 Aug 2017 15:41:04 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Wed, 09 Aug 2017 19:24:33 GMT
ETag: "c04c-5565707a34966"
Accept-Ranges: bytes
Content-Length: 49228
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive

我希望看到Content-Type: text/plain; charset=utf-8。如何為這些 URI 獲得可靠的 UTF-8 編碼?

我通過將這些行添加到“apache2.conf”來解決這個問題:

AddType text/plain .yml
AddDefaultCharset utf-8

這是在寫這個答案之前的一段時間。最近的 Apache 安裝可能已經將 utf-8 設置為預設值。

不為 304 Modified 響應發送 Content-Type,因為這樣的響應沒有內容正文。

查看 200 響應類型,您應該會看到這一點。使用 Ctrl + F5 強制刷新和 200 響應,而不是使用 304 響應重新驗證記憶體的響應。

然後您更新了您的問題以包含 200 響應,但我希望始終有一個Content-Type: text/plain標題或等效項(即使不包括字元集)但這不在您的範例中,所以不確定您是否擁有所有詳細資訊那?

無論如何,設置它的正確方法是將以下內容添加到您的 apache 配置中:

#Set the correct Char set so don't need to set it per page.
AddDefaultCharset utf-8
#for css, js, etc.
AddCharset utf-8 .htm .html .js .css

第一個(AddDefaultCharset)將為text/plaintext/html資源設置字元集。

第二個(AddCharset)需要 mod_mime 並將根據文件副檔名設置其他類型的字元集。Javascript 文件以內容類型發送,application/javascript而 CSS 文件以內容類型發送,text/css因此 AddDefaultCharset 設置不會選擇。.htm 和 .html 文件實際上並不需要在其中,因為預設情況下會被拾取,但沒有明確的危害。

引用自:https://serverfault.com/questions/867814