ファイルタイプ (MIME タイプ) に基づいて .htaccess にヘッダーを追加するにはどうすればよいでしょうか?

ファイルタイプ (MIME タイプ) に基づいて .htaccess にヘッダーを追加するにはどうすればよいでしょうか?

ファイルタイプ (MIME タイプ) が text/html であるすべての応答に 2 つの 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、それが設定されている場合は、 を含む 2 つの追加ヘッダーも追加します) Header set

私は複数の情報源を確認しましたapache.orgはこちら、しかし答えが見つからないようです。

これは私が試したことの中で最も論理的と思われることの 1 つです。現在のヘッダーをチェックし、結果が true の場合は追加のヘッダーを追加します。

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

しかし、この ENV がリクエスト ヘッダーから取得されたものなのか、応答ヘッダーから取得されたものなのかはわかりません。

これを実現する方法、つまり MIME タイプに基づいて応答にカスタム HTTP ヘッダーを追加する方法を誰か知っていますか?

ありがとう。

答え1

コンテンツ タイプは後で設定され、そこでは利用できない可能性があるため、コンテンツ タイプ以外の何かに一致させる必要がある可能性があります。

ドキュメント詳しくはこちらあなたの問題を説明します:

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

モジュールだけでやってみますmod_headers。ここで例を見てください:詳しくは、http://httpd.apache.org/docs/2.4/mod/mod_headers.html をご覧ください。

そこで私は次のような提案をします:

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

CONTENT_TYPE が設定されていないためにこれが機能しない場合は、REQUEST_URI に保存されている拡張子と同様に一致させる必要があります。

答え2

皆さんありがとうございます。これは確かに私にとってはうまくいきました (コマンドの最後に条件を追加しますHeader Set):

Header always set X-TEST VALUE-XYZ "expr=%{CONTENT_TYPE} == 'text/html; charset=UTF-8'"

がなくても動作すると思いますがalways、まだ試していません。

関連情報