Назад | Перейти на главную страницу

Как устранить сообщение об ошибке «ExpiresActive not allowed here» в файле .htaccess?

Я пытаюсь добавить заголовки 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>