¿Cómo resolver el mensaje de error "ExpiresActive no permitido aquí" en el archivo .htaccess?

11

Estoy tratando de agregar encabezados Expires a las respuestas HTTP del sitio en el que estoy trabajando. La única forma de controlar el servidor Apache 1.3 es editando mi archivo .htaccess. Intenté agregar código como el siguiente para habilitar los encabezados Expires:

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>

Sin embargo, esto produce un error interno del servidor con el siguiente mensaje de error en el registro:

Caduca Activo no permitido aquí

Probablemente no pueda usar métodos alternativos de control de caché, ya que mod_headers no está habilitado. ¿Hay alguna forma de que pueda habilitar el encabezado Expires usando mod_expires a través de algunos comandos en el archivo .htaccess?

Actualización
Recuerdo haber leído en alguna parte que la configuración de Anulación en httpd.conf podría tener algo que ver con eso. ¿Hay alguna forma de validar que ese es realmente el problema? Si es así, ¿hay alguna solución para controlar los encabezados de almacenamiento en caché de mi sitio web?

Daan
fuente

Respuestas:

12

En una nota general, la forma más sencilla de tratar problemas como este es consultar el manual.

http://httpd.apache.org/docs/1.3/mod/mod_expires.html#expiresactive

Syntax:      ExpiresActive On|Off
Context:     server config, virtual host, directory, .htaccess
Override:    Indexes
Status:      Extension
Module:      mod_expires

Los dos campos de interés son Contexto y Anulación. Como podemos ver, está bien usar ExpiresActive en un archivo .htaccess siempre que permita los índices de sobrescritura

Actualizar:

Para abordar su necesidad de encabezados caducados. Echa un vistazo a /programming/1036941/setup-expires-headers-php-apache

Espero que esto ayude:)

Runa Nilssen
fuente
Gracias por su respuesta, pero como ya dice mi pregunta: no tengo acceso a la configuración del servidor que no sea a través del archivo .htaccess en mi raíz web. Entonces, si AllowOverride no está configurado correctamente, no tengo suerte.
Daan
Debe hablar con su proveedor al respecto. No permitir índices es simplemente imho estúpido. Y, sí, si no pueden / no lo cambiarán, entonces lo eliminaste en lo que respecta a mod_expires.
Rune Nilssen
Solo para hacer eco del punto de Rune: si su proveedor de servicios no cambiará su parámetro AllowOverride, entonces no hay nada más que pueda hacer.
DaveG
3

Agregar "AllowOverride Indexes" a la configuración de Apache para la carpeta en la que tiene htaccess funcionó para mí. Encontré la solución aquí http://speedforce.org/2009/01/were-back/


fuente
1
Gracias por su respuesta, pero como ya dice mi pregunta: no tengo acceso a la configuración del servidor que no sea a través del archivo .htaccess en mi raíz web. Entonces, si AllowOverride no está configurado correctamente, no tengo suerte.
Daan
1

en RHEL en /etc/httpd/conf/httpd.conf

cambiar AllowOverride None

Permitir anular índices de opciones de información de archivo

eggroll77
fuente
2
Gracias por su respuesta, pero de nuevo, como ya dice mi pregunta: no tengo acceso a la configuración del servidor que no sea a través del archivo .htaccess en mi raíz web. Entonces, si AllowOverride no está configurado correctamente, no tengo suerte.
Daan
0

En mi caso, mod_expires no está disponible, pero headers_module sí, esto funciona bien (en Apache 2.0):

# match all these file types, regardless of upper/lowercase
<FilesMatch "\.(?i:jpg|png|gif|js|css)$">
    # 60 seconds * 60 minutes * 24 hours * 7 days
    Header set Cache-Control "max-age=604800, public, must-revalidate"

    # alternative: never expire headers (do look up the caveats)
    # Header set Expires "Thu, 01 Jan 2030 08:08:00 GMT"
    # Header set Cache-Control "public, no-transform"

    # further (debatable) optimizations
    # FileETag None
    # Header unset ETag
    # Header unset Last-Modified
</FilesMatch>
Frank Nocke
fuente
0

Tuve el mismo problema en Apache 2.4 / CentOS 7. La sintaxis para el archivo de configuración ahora es: "Permitir opciones de reemplazo = índices"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Frederick vomjupiter
fuente