0

I have a site with Apache 2.2.22 . I have enabled the mod-expires and mod-headers modules seemingly correctly:

$ apachectl -t -D DUMP_MODULES
…
expires_module (shared)
headers_module (shared)
…

Settings include:

ExpiresActive On
ExpiresDefault "access plus 10 minutes"
ExpiresByType application/xml "access plus 1 minute"

Checking the headers of requests, I see that max-age is set correctly both for the generic case and for xml files (which are auto-generated, but mostly static).

I would like to have different expiries for xml files in a directory (e.g. /data), so http://site/data/sample.xml expires 24 hours later.

I enter the following in data/.htaccess:

ExpiresByType application/xml "access plus 24 hours"
Header set Cache-control "max-age=86400, public"

but it seems that apache ignores this.

How can I ensure apache2 uses the .htaccess directives? I can provide further information if requested.

1 Answer 1

1

Since you have access to the core configuration file, it would be preferable to write it directly in there, under a directory section like so:

<Directory /var/www/data>
  ExpiresByType application/xml "access plus 24 hours"
  Header set Cache-control "max-age=86400, public"
</Directory>

If you really want to use an .htaccess file, make sure you have:

<Directory /var/www/data>
    AllowOverride All
</Directory>
1
  • Yes, using the core configuration file is a solid advice; what I didn't clarify was that I want to delegate expiration control to others who don't have write access to the apache configuration. The AllowOverride option did it. Thanks. Commented Nov 5, 2012 at 13:11

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.