Apache-2.4

如何根據文件類型(mime 類型)在 .htaccess 中添加標題?

  • February 25, 2018

我想為所有文件類型(mime 類型)文本/html 的響應添加兩個額外的 HTTP 標頭,但不是其他文件。

目前標題(已編輯):

curl -I https://www......

HTTP/1.1 200 OK
Date: Fri, 23 Feb 2018 20:43:15 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache
Vary: Content-Type,Accept-Encoding
X-Frame-Options: SAMEORIGIN
Connection: keep-alive
Content-Type: text/html; charset=UTF-8
Content-Language: de-DE

我嘗試的<If>語句不起作用(我的想法是檢查text/html,如果已設置,則還要添加兩個額外的標題Header set.

我已經在 apache.org 上檢查了多個來源,例如此處,但似乎找不到答案。

這是我嘗試過的最合乎邏輯的事情之一。檢查目前標題;如果結果為真,則添加額外的標題。

<If "%{HTTP:Content-Type} in { 'text/html' }">
Header set Header1 test
Header set Header2 test
</If>

但我不知道這個 ENV 是取自請求還是響應頭。

有誰知道實現這一點的方法——根據 mime 類型在響應中添加自定義 HTTP 標頭?

謝謝。

您可能需要匹配內容類型以外的其他內容,因為它可能是稍後設置的,因此在那裡不可用。

https://httpd.apache.org/docs/2.4/expr.html上的文件解釋了您的問題:

CONTENT_TYPE    The content type of the response (not available during <If >)

mod_headers我會嘗試只用模組做事。在這裡查看範例:https ://httpd.apache.org/docs/2.4/mod/mod_headers.html

所以我建議如下:

Header always set Header1 Value1 "expr=%{CONTENT_TYPE} == text/html"

如果由於未設置 CONTENT_TYPE 而這不起作用,則您需要像儲存在 REQUEST_URI 中的副檔名一樣進行匹配。

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