Как добавить заголовок в .htaccess на основе типа файла (типа mime)?

Как добавить заголовок в .htaccess на основе типа файла (типа mime)?

Я хотел бы добавить два дополнительных заголовка HTTP ко всем ответам, имеющим тип файла (тип MIME) text/html, но не к другим файлам.

Текущие заголовки (отредактированные):

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 из заголовка запроса или ответа.

Кто-нибудь знает, как этого добиться — добавить в ответ пользовательский HTTP-заголовок на основе MIME-типа?

Спасибо.

решение1

Вероятно, вам придется сопоставлять что-то другое, а не тип контента, поскольку он, вероятно, будет установлен позже и, следовательно, недоступен там.

Документация на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 не задан, вам нужно будет сопоставить like с расширением, сохраненным в REQUEST_URI.

решение2

Спасибо всем, это действительно сработало для меня (добавление условия в конце команды Header Set):

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

Я думаю, что это также должно работать и без always, но пока не пробовал.

Связанный контент