Como adicionar um cabeçalho em .htaccess com base no tipo de arquivo (tipo MIME)?

Como adicionar um cabeçalho em .htaccess com base no tipo de arquivo (tipo MIME)?

Gostaria de adicionar dois cabeçalhos HTTP extras a todas as respostas do tipo de arquivo (tipo MIME) texto/html, mas não de outros arquivos.

Os cabeçalhos atuais (editados):

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

A <If>instrução que tentei não está funcionando (minha ideia era verificar text/htmle, se estiver definido, adicionar também dois cabeçalhos extras com Header set.

Eu verifiquei várias fontes comoaqui no apache.org, mas não consigo encontrar a resposta.

Esta é uma das coisas que tentei e que me parece mais lógica. Faça uma verificação de um cabeçalho atual; se o resultado for verdadeiro, adicione cabeçalhos extras.

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

Mas não sei se esse ENV é retirado do cabeçalho da requisição ou da resposta.

Alguém sabe uma maneira de conseguir isso - adicionar um cabeçalho HTTP personalizado na resposta com base no tipo MIME?

Obrigado.

Responder1

Você provavelmente precisará corresponder a algo diferente do tipo de conteúdo, porque provavelmente será definido posteriormente e, portanto, não estará disponível lá.

A documentação emhttps://httpd.apache.org/docs/2.4/expr.htmlexplica seu problema:

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

Eu tentaria fazer coisas apenas com o mod_headersmódulo. Veja exemplos aqui:https://httpd.apache.org/docs/2.4/mod/mod_headers.html

Então eu sugeriria algo como:

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

Se isso não funcionar porque CONTENT_TYPE não está definido, você precisará corresponder à extensão armazenada em REQUEST_URI.

Responder2

Obrigado a todos, isso realmente funcionou para mim (adicionando uma condição no final do Header Setcomando):

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

Acho que isso também deveria funcionar sem o always, ainda não tentei.

informação relacionada