2016-10-20 2 views
1

Я добавил .htaccess файл в корневой папке сайта /var/www/html Похоже, что этот.htaccess не имеет никакого эффекта и не отправляет заголовок Expires

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType text/html "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType text/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access 1 month" 
</IfModule> 
## EXPIRES CACHING ## 

Я пытался регулировать опцию AllowOverride, как это рекомендуется в много мест. Моего /etc/apache2/sites-available/000-default.conf файл выглядит следующим образом

<VirtualHost *:80> 
    <Directory /var/www/html> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 
... 
</VirtualHost *:80> 

И /etc/apache2/apache2.conf выглядит этой

<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
    Require all denied 
</Directory> 

<Directory /usr/share> 
    AllowOverride None 
    Require all granted 
</Directory> 

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

Я абсолютно уверен, что файл .htaccess просто не работает, потому что когда я добавить случайные символы в файл (попытаться сломать его и получить HTTP-ответ 500), он вообще не влияет на сайт. Что может быть причиной этого?

+0

Поскольку ваши .htaccess гласит, что он будет делать только что-либо, если загружен mod_expires: вы уверены, загружается mod_expires? 'a2enmod mod_expires' может помочь. –

+0

Это имеет смысл @FlorianHeer, и на самом деле это было проблемой! Я не понимал, что мне пришлось вручную запустить этот модуль. Если вы представите это как ответ, я соглашусь с ним. Просто убедитесь, что вы записываете 'a2enmod expires' вместо' a2enmod mod_expires' – sjbuysse

+0

Спасибо. Я все время забываю, что «mod_» не нужен для 'a2enmod', я получаю это сообщение об ошибке почти каждый раз ;-) –

ответ

0

Информация об истечении срока действия создается и отправляется модулем expires. В соответствии с этим .htaccess правильно проверяет наличие этого модуля. Если он не загружен, никаких действий здесь не предпринимается.

Убедитесь, что модуль загружен правильно, в настоящее время наиболее совместимы способ сделать это с a2enmod:

:~ $ a2enmod expires 
Смежные вопросы