httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Ames <grega...@apache.org>
Subject Re: mod_expires and mod_dir problem
Date Mon, 24 Mar 2003 19:11:10 GMT
Brian Akins wrote:
> I have had the problem in all versions of apache 2 that the following
> does not work as expected:
> 
> ExpiresActive On
> ExpiresByType text/html A120
> 
> A request for http://host.domain.com/index.html has the correct Expires
> header added, but a request for http://host.domain.com/ does not.
> 
> 
> 
> I determined that mod_expires always ran before mod_dir, so mod_expires
> never matched the content-type.  My solution was to change the following
> in mod_expires.c:
> 
> -    ap_hook_fixups(add_expires,NULL,NULL,APR_HOOK_MIDDLE);
> +    ap_hook_fixups(add_expires,NULL,NULL,APR_HOOK_REALLY_LAST);
> 
> 
> This fixes my particular issue and does not seem to break anything else.
>  Can others confirm this?

This patch is an improvement, but the problem goes further.  Try setting a 
non-default ContentType in a CGI.  ExpiresByType won't work as you might expect. 
  Why not?  The CGI creates the ContentType header during the handler phase, 
after all the fixups.

I've had this reported as a loss of function between 1.3 and 2.0, but I don't 
think it really is.  In 1.3, the default ContentType seems to take effect 
earlier.  So if your ExpiresByType happens to match the default, it appears to 
work in 1.3.

The good news for 2.x: mod_expires' fixup routine could be split in two, with 
the code that looks at the type running as a one-shot output filter, after the 
header filter.  I don't know of a clean way to fix it in 1.3.

Greg


Mime
View raw message