Назад | Перейти на главную страницу

Как добавить заголовок в базы .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?

Спасибо.

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

Документация на 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.

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

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

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