Wie löse ich die Fehlermeldung "ExpiresActive hier nicht erlaubt" in der .htaccess-Datei?


11

Ich versuche, Expires-Header zu den HTTP-Antworten der Site hinzuzufügen, an der ich arbeite. Die einzige Möglichkeit für mich, den Apache 1.3-Server zu steuern, besteht darin, meine .htaccess-Datei zu bearbeiten. Ich habe versucht, Code wie den folgenden hinzuzufügen, um die Expires-Header zu aktivieren:

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>

Dies führt jedoch zu einem internen Serverfehler mit der folgenden Fehlermeldung im Protokoll:

ExpiresActive ist hier nicht erlaubt

Ich kann wahrscheinlich keine alternativen Methoden zur Cache-Steuerung verwenden, da mod_headers nicht aktiviert ist. Gibt es eine Möglichkeit, den Expires-Header mithilfe von mod_expires über einige Befehle in der .htaccess-Datei zu aktivieren?

Update
Ich erinnere mich, dass ich irgendwo gelesen habe, dass die Override-Einstellungen in httpd.conf möglicherweise etwas damit zu tun haben. Gibt es eine Möglichkeit zu bestätigen, dass dies tatsächlich das Problem ist? Wenn ja, gibt es eine Problemumgehung, um die Caching-Header für meine Website zu steuern?

Antworten:


13

Im Allgemeinen ist der einfachste Weg, mit solchen Problemen umzugehen, das Handbuch.

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

Die beiden Interessensfelder sind Kontext und Überschreiben. Wie wir sehen können, ist es in Ordnung, ExpiresActive in einer .htaccess-Datei zu verwenden, solange Sie AllowOverride-Indizes verwenden

Aktualisieren:

Um Ihren Bedarf an abgelaufenen Headern zu decken. Überprüfen Sie /programming/1036941/setup-expires-headers-php-apache

Hoffe das hilft:)


Vielen Dank für Ihre Antwort, aber wie meine Frage bereits besagt: Ich habe keinen Zugriff auf die Serverkonfiguration außer über die .htaccess-Datei in meinem Webstamm. Wenn AllowOverride nicht richtig eingestellt ist, habe ich kein Glück.
— Daan

Sie sollten mit Ihrem Provider darüber sprechen. Indizes nicht zuzulassen ist einfach imho dumm. Und ja, wenn sie es nicht ändern können / wollen, haben Sie es geschafft, was mod_expires betrifft.
— Rune Nilssen

Nur um Runes Argument zu wiederholen: Wenn Ihr Dienstanbieter seinen AllowOverride-Parameter nicht ändert, können Sie nichts anderes tun.
— DaveG

3

Das Hinzufügen von "AllowOverride-Indizes" zu Apaches conf für den Ordner, in dem Sie Zugriff haben, hat für mich funktioniert. Die Lösung finden Sie hier http://speedforce.org/2009/01/were-back/


1
Vielen Dank für Ihre Antwort, aber wie meine Frage bereits besagt: Ich habe keinen Zugriff auf die Serverkonfiguration außer über die .htaccess-Datei in meinem Webstamm. Wenn AllowOverride nicht richtig eingestellt ist, habe ich kein Glück.
— Daan

1

auf RHEL in /etc/httpd/conf/httpd.conf

AllowOverride ändern Keine

zu AllowOverride FileInfo Options Indizes


2
Vielen Dank für Ihre Antwort, aber noch einmal, wie meine Frage bereits besagt: Ich habe keinen Zugriff auf die Serverkonfiguration außer über die .htaccess-Datei in meinem Webstamm. Wenn AllowOverride nicht richtig eingestellt ist, habe ich kein Glück.
— Daan

0

In meinem Fall ist mod_expires nicht verfügbar, aber headers_module funktioniert gut (unter 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

Ich hatte das gleiche Problem unter Apache 2.4 / CentOS 7. Die Syntax für die Konfigurationsdatei lautet jetzt: "AllowOverride Options = Indexes".

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.