Як вирішити повідомлення про помилку "ExpiresActive тут не дозволено" у файлі .htaccess?


11

Я намагаюся додати заголовки 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?

Оновлення
Я пам'ятаю, що десь читав, що налаштування Override в httpd.conf можуть мати щось із цим. Чи є якийсь спосіб підтвердити, що це справді проблема? Якщо це так, чи існує якесь рішення щодо керування заголовками кешування для мого веб-сайту?

Відповіді:


12

Загалом, найпростіший спосіб вирішити подібні питання - це посилання на посібник.

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

Дві області, що їх цікавлять, Контекст і Переоцінка. Як ми бачимо, нормально використовувати ExpiresActive у файлі .htaccess так само, як ви AllowOverride Indexes

Оновлення:

Для вирішення ваших потреб у заголовках закінчується. Перевірте /programming/1036941/setup-expires-headers-php-apache

Сподіваюся, це допомагає :)


Дякую за вашу відповідь, але, як уже вказано в моєму питанні: я не маю доступу до конфігурації сервера, окрім файлу .htaccess у моєму веб-кореневі. Тож якщо AllowOverride встановлений неправильно, мені не пощастило.
Даан

Ви повинні поговорити з цим провайдером. Не допускати індексів просто глухо. І так, якщо вони не можуть / не зможуть змінити це, то ви закреслили, наскільки йде mod_expires.
Rune Nilssen

Просто наголос на руні - якщо ваш постачальник послуг не змінить параметр AllowOverride, то ви нічого не можете зробити.
DaveG

3

Додавання "AllowOverride Indexes" в конфіденційність Apache для папки, в якій у вас працював htaccess. Тут знайшли рішення http://speedforce.org/2009/01/were-back/


1
Дякую за вашу відповідь, але, як уже вказано в моєму питанні: я не маю доступу до конфігурації сервера, окрім файлу .htaccess у моєму веб-кореневі. Тож якщо AllowOverride встановлений неправильно, мені не пощастило.
Даан

1

на RHEL в /etc/httpd/conf/httpd.conf

змінити AllowOverride None

до AllowOverride FileInfo Options Index


2
Дякую за вашу відповідь, але знову ж таки, як уже моє запитання стверджує: я не маю доступу до конфігурації сервера, окрім файлу .htaccess у моєму веб-корені. Тож якщо AllowOverride встановлений неправильно, мені не пощастило.
Даан

0

У моєму випадку 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>

0

У мене була така ж проблема в Apache 2.4 / CentOS 7. Синтаксис для файлу Config зараз: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.