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?

Daan
quelle

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:)

Rune Nilssen
quelle
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/


quelle
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

eggroll77
quelle
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>
Frank Nocke
quelle
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>
frederick vomjupiter
quelle