Я пытаюсь добавить заголовки Expires к HTTP-ответам сайта, над которым я работаю. Для меня единственный способ управлять сервером Apache 1.3 - это редактировать мой файл .htaccess. Я попытался добавить следующий код, чтобы включить заголовки Expires:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 hour"
</IfModule>
Однако это приводит к внутренней ошибке сервера со следующим сообщением об ошибке в журнале:
ExpiresActive здесь не допускается
Я, наверное, не могу использовать альтернативные методы управления кешем, так как mod_headers не включен. Есть ли способ включить заголовок Expires с помощью mod_expires с помощью некоторых команд в файле .htaccess?
Обновить
Я помню, как где-то читал, что настройки переопределения в httpd.conf могут иметь к этому какое-то отношение. Есть ли способ подтвердить, что это действительно проблема? Если это так, есть ли какое-то обходное решение для управления кешированием заголовков для моего сайта?
В общем, самый простой способ справиться с подобными проблемами - обратиться к руководству.
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
Два интересующих поля это Context и Override. Как мы видим, можно использовать ExpiresActive в файле .htaccess, пока вы используете AllowOverride Indexes.
Обновить:
Чтобы удовлетворить вашу потребность в устаревших заголовках. Проверять, выписываться https://stackoverflow.com/questions/1036941/setup-expires-headers-php-apache
Надеюсь это поможет:)
Добавление "AllowOverride Indexes" в конфигурацию Apache для папки, в которой у вас есть htaccess, помогло мне. Нашел решение здесь http://speedforce.org/2009/01/were-back/
на RHEL в /etc/httpd/conf/httpd.conf
изменить AllowOverride None
в AllowOverride FileInfo Options Indexes
В моем случае mod_expires недоступен, но есть headers_module, это прекрасно работает (на 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>
У меня была такая же проблема с Apache 2.4 / CentOS 7. Синтаксис файла конфигурации теперь: «AllowOverride Options = Indexes»
<Directory /var/www/html/>
Options Indexes FollowSymlinks
AllowOverride Options=Indexes
</Directory>