2012-05-30 14 views
5

En httpd.conf las últimas líneas son:cabecera Expira no trabaja

ExpiresActive On 
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
    ExpiresDefault "access plus 3 days" 
</FilesMatch> 

Cuando corro YSlow que dice que todos los archivos CSS (y otros) no tienen conjunto de caducidad. Los archivos CSS están en subdirectorios, pero creo que "\." debe coincidir con todos los archivos independientemente del subdirectorio.

Apache está configurado para hosts virtuales, pero las instrucciones anteriores están fuera de la sección de fantasmas en la parte inferior de httpd.conf.

Hay una directiva para LoadModule expires_module modules/mod_expires.so en el archivo .conf.

El sitio está en AWS ejecutando AWS Linux y Apache2. Reinicié Apache antes de comprobar si funcionaba.

Respuesta

7

En respuesta a su pregunta, esto funciona para mí en mi httpd.conf:

LoadModule expires_module /usr/lib/apache2/modules/mod_expires.so 
ExpiresActive On 

<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
ExpiresDefault "access plus 3 days" 
</filesMatch> 

Aquí están algunas cosas para probar:

1) Asegúrese de que mod_expires.so es donde se piensa es. Puede ver qué módulos se incluyen al usar esto en su terminal: apache2 -M.

2) Asegúrese de que sus directivas se aplican a los archivos que le interesan (es decir, no sobreescritos por un archivo .htaccess algún lugar más abajo en la línea)

3) Asegúrese de que la directiva LoadModule está en su httpd. conf archivo

4) En su 0xregex, debe escapar del punto con una barra invertida, de lo contrario, se empareja cualquier carácter. No es un gran problema, pero terminaría aplicando la regla a páginas no estáticas como "site.com/politico" (observe el final ico) por ejemplo.

+0

Gracias por la respuesta clara. Tenía todo correcto excepto la ubicación del código (su artículo3). Lo puse en la sección de host virtual para el sitio y ¡presto yslow estaba feliz! Gracias de nuevo. – Jim

+0

¡Genial, me alegro de que haya sido útil! – pieman72