views:

57

answers:

2

Currently I am using .htaccess to force cacheing across my website with the standard

FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

But the content on my front page (just my domain.com) changes a lot more frequently, and I would like to either remove forced caching or set it to just a few minutes specifically for that page. I have almost no knowledge of .htaccess coding, so any help is greatly appreciated. Thanks.

A: 

Use php's header function to remove/add headers just on your home page.

<?php
$expires = 60*60*5;
header_remove('ETag');
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
Petah
It tells PHP to send HTTP headers which should cause the browser to cache this specific result for 5 minutes.
tobyodavies
Maxage should be `max-age`. The date can be formatted with `gmdate('r', ...)`
jmz
+2  A: 

Use a Files section like this:

<Files index.php>
  ExpiresDefault "access plus 300 seconds"
</Files>

If you have access to the server configuration, you can also check out Location to match specific locations (i.e., match according to the URL instead of the final filename), but that one can't be used inside .htaccess

Emil Vikström
Thanks mate, this is what I was looking for. I do have access to server configurations, but index.php is the only page I need to do this for so I don't think anything else would be necessary. Is there some reason it would be better to use though?
RobHardgood
Yes, you may have rewrite rules which point all requests to the same PHP file. In those cases, your Files block will match every request regardless of which "page" it is.
Emil Vikström