Come risolvere il messaggio di errore "ExpiresActive non consentito qui" nel file .htaccess?


11

Sto cercando di aggiungere le intestazioni di Expires alle risposte HTTP del sito su cui sto lavorando. L'unico modo per controllare il server Apache 1.3 è modificando il mio file .htaccess. Ho provato ad aggiungere codice come il seguente per abilitare le intestazioni di Expires:

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

Tuttavia, ciò provoca un errore interno del server con il seguente messaggio di errore nel registro:

Scadenza Attiva non consentita qui

Probabilmente non posso usare metodi alternativi di controllo della cache, poiché mod_headers non è abilitato. Esiste un modo in cui posso ancora abilitare l'intestazione Expires usando mod_expires tramite alcuni comandi nel file .htaccess?

Aggiornamento
Ricordo di aver letto da qualche parte che le impostazioni di Override in httpd.conf potrebbero avere qualcosa a che fare con esso. C'è un modo per convalidare quello che è davvero il problema? In tal caso, esiste comunque qualche soluzione alternativa per controllare le intestazioni della cache per il mio sito Web?

Risposte:


12

In generale, il modo più semplice per affrontare problemi come questo è fare riferimento al manuale.

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

I due campi di interesse sono Context e Override. Come possiamo vedere, va bene usare ExpiresActive in un file .htaccess per tutto il tempo in cui si consente l'indice di Override

Aggiornare:

Per rispondere alla necessità di scadere le intestazioni. Dai un'occhiata a /programming/1036941/setup-expires-headers-php-apache

Spero che questo ti aiuti:)


Grazie per la tua risposta, ma come già indicato dalla mia domanda: non ho accesso alla configurazione del server se non tramite il file .htaccess nella mia radice web. Quindi, se AllowOverride non è impostato correttamente, sono sfortunato.
Daan,

Dovresti parlarne con il tuo fornitore. Non consentire gli indici è semplicemente stupido. E, sì, se non riescono / non lo cambiano, allora hai colpito per quanto riguarda mod_expires.
Rune Nilssen,

Solo per ribadire il punto di Rune: se il tuo fornitore di servizi non modificherà il parametro AllowOverride, non c'è nient'altro che puoi fare.
DaveG,

3

Aggiungendo "AllowOverride Indexes" alla conf di Apache per la cartella in cui hai funzionato per me. Ho trovato la soluzione qui http://speedforce.org/2009/01/were-back/


1
Grazie per la tua risposta, ma come già indicato dalla mia domanda: non ho accesso alla configurazione del server se non tramite il file .htaccess nella mia radice web. Quindi, se AllowOverride non è impostato correttamente, sono sfortunato.
Daan,

1

su RHEL in /etc/httpd/conf/httpd.conf

cambia AllowOverride Nessuno

per consentire agli indici delle opzioni FileInfo di Override


2
Grazie per la tua risposta, ma ancora una volta, come afferma già la mia domanda: non ho accesso alla configurazione del server se non tramite il file .htaccess nella mia radice web. Quindi, se AllowOverride non è impostato correttamente, sono sfortunato.
Daan,

0

Nel mio caso, mod_expires non è disponibile, ma headers_module è, funziona bene (su 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

Ho avuto lo stesso problema su Apache 2.4 / CentOS 7. La sintassi per il file di configurazione ora è: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.