¿Cómo agregar un encabezado en .htaccess según el tipo de archivo (tipo mime)?

¿Cómo agregar un encabezado en .htaccess según el tipo de archivo (tipo mime)?

Me gustaría agregar dos encabezados HTTP adicionales a todas las respuestas que sean de tipo de archivo (tipo mime) texto/html, pero no a otros archivos.

Los encabezados actuales (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

La <If>declaración que probé no funciona (mi idea era verificar text/htmly, si está configurada, agregar también dos encabezados adicionales con Header set.

He comprobado varias fuentes comoaquí en apache.org, pero parece que no puedo encontrar la respuesta.

Esta es una de las cosas que he probado y que me parece más lógica. Haga una verificación de un encabezado actual; Si el resultado es verdadero, agregue encabezados adicionales.

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

Pero no sé si este ENV se toma del encabezado de solicitud o de respuesta.

¿Alguien conoce alguna forma de lograr esto: agregar un encabezado HTTP personalizado en la respuesta según el tipo de mime?

Gracias.

Respuesta1

Probablemente necesitará hacer coincidir algo más que el tipo de contenido porque probablemente se configurará más tarde y, por lo tanto, no estará disponible allí.

La documentación enhttps://httpd.apache.org/docs/2.4/expr.htmlexplica tu problema:

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

Intentaría hacer cosas solo con el mod_headersmódulo. Mira ejemplos aquí:https://httpd.apache.org/docs/2.4/mod/mod_headers.html

Entonces sugeriría algo como:

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

Si eso no funciona porque CONTENT_TYPE no está configurado, deberá hacer coincidir la extensión almacenada en REQUEST_URI.

Respuesta2

Gracias a todos, esto realmente funcionó para mí (agregando una condición al final del Header Setcomando):

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

Creo que esto también debería funcionar sin el always, aún no lo he probado.

información relacionada