Comment résoudre le message d'erreur «ExpiresActive non autorisé ici» dans le fichier .htaccess?

11

J'essaie d'ajouter des en-têtes Expires aux réponses HTTP du site sur lequel je travaille. La seule façon pour moi de contrôler le serveur Apache 1.3 est de modifier mon fichier .htaccess. J'ai essayé d'ajouter du code tel que le suivant pour activer les en-têtes Expires:

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

Cependant, cela entraîne une erreur de serveur interne avec le message d'erreur suivant dans le journal:

ExpireActive non autorisé ici

Je ne peux probablement pas utiliser d'autres méthodes de contrôle du cache, car mod_headers n'est pas activé. Existe-t-il un moyen d'activer l'en-tête Expires à l'aide de mod_expires via certaines commandes du fichier .htaccess?

Mise à jour
Je me souviens avoir lu quelque part que les paramètres de remplacement dans httpd.conf pourraient avoir quelque chose à voir avec cela. Existe-t-il un moyen de valider que tel est bien le problème? Si tel est le cas, existe-t-il une solution de contournement pour contrôler les en-têtes de mise en cache de mon site Web?

Daan
la source

Réponses:

12

D'une manière générale, la manière la plus simple de traiter des problèmes comme celui-ci se réfère au manuel.

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

Les deux champs qui l'intéressent sont Context et Override. Comme nous pouvons le voir, utiliser ExpiresActive dans un fichier .htaccess aussi longtemps que vous autorisez les index OverOverride

Mise à jour:

Pour répondre à votre besoin d'en-têtes expirés. Consultez /programming/1036941/setup-expires-headers-php-apache

J'espère que cela t'aides:)

Rune Nilssen
la source
Merci pour votre réponse, mais comme ma question l'indique déjà: je n'ai pas accès à la configuration du serveur autrement que via le fichier .htaccess dans ma racine web. Donc, si AllowOverride n'est pas défini correctement, je n'ai pas de chance.
Daan
Vous devriez en parler à votre fournisseur. Ne pas autoriser les index est à mon humble avis stupide. Et, oui, s'ils ne peuvent pas / ne le changeront pas, alors vous avez supprimé aussi loin que mod_expires.
Rune Nilssen
Pour faire écho au point de Rune - si votre fournisseur de services ne modifie pas son paramètre AllowOverride, il n'y a rien d'autre à faire.
DaveG
3

L'ajout d '"Index AllowOverride" à la conf. D'Apache pour le dossier dans lequel vous avez htaccess a fonctionné pour moi. Trouvé la solution ici http://speedforce.org/2009/01/were-back/


la source
1
Merci pour votre réponse, mais comme ma question l'indique déjà: je n'ai pas accès à la configuration du serveur autrement que via le fichier .htaccess dans ma racine web. Donc, si AllowOverride n'est pas défini correctement, je n'ai pas de chance.
Daan
1

sur RHEL dans /etc/httpd/conf/httpd.conf

changer AllowOverride Aucun

des index d'options AllowOverride FileInfo

eggroll77
la source
2
Merci pour votre réponse, mais encore une fois, comme ma question le dit déjà: je n'ai pas accès à la configuration du serveur autrement que via le fichier .htaccess dans ma racine Web. Donc, si AllowOverride n'est pas défini correctement, je n'ai pas de chance.
Daan
0

Dans mon cas, mod_expires n'est pas disponible, mais headers_module l'est, cela fonctionne bien (sur 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
la source
0

J'ai eu le même problème sur Apache 2.4 / CentOS 7. La syntaxe du fichier de configuration est maintenant: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
frederick vomjupiter
la source