Hi Ruediger, the following patch (still to be carefully tested and/or improved) should force RewriteCond to behave like an <If> block adding the Vary header simply if the condition is evaluated (so header value present in the request but not satisfying the condition or header completely absent):
http://home.apache.org/~elukey/httpd-trunk-mod_rewrite-add_vary_header_always.patch It seems to be a big change in behavior though, I'd be curious to find out the motivations of the implementation choice at the time (will try to dig a bit into svn history). Thanks! Luca 2017-10-23 8:43 GMT+02:00 Plüm, Rüdiger, Vodafone Group < [email protected]>: > I would tend to say that the <If> code is correct and the RewriteCond code > is wrong, because it doesn’t matter if the condition becomes true or false. > The headers value has an influence on the result. Tricky question is what > to do regarding Vary if the non-presence of a header has an influence. > > > > Regards > > > > Rüdiger > > > > *Von:* Luca Toscano [mailto:[email protected]] > *Gesendet:* Sonntag, 22. Oktober 2017 11:47 > *An:* Apache HTTP Server Development List <[email protected]> > *Betreff:* Re: mod_rewrite, vary headers and internal redirects > > > > Hi everybody, > > > > 2017-10-09 13:46 GMT+02:00 Luca Toscano <[email protected]>: > > Hi Yann, > > > > 2017-10-08 14:13 GMT+02:00 Yann Ylavic <[email protected]>: > > On Sun, Oct 8, 2017 at 2:03 PM, Yann Ylavic <[email protected]> wrote: > > Hi Luca, > > > > On Sun, Oct 8, 2017 at 11:59 AM, Luca Toscano <[email protected]> > wrote: > >> > >> Does this approach make sense? Is there any smarter way to do it? > > > > I can't tell that I love the hack in internal redirects but looks like > > a simple way to handle the case... > > Nit: maybe a more descriptive name for the "keep-vary-header" note, > > "redirect-keeps-vary"? > > > > +1 > > > > > But after all, if we reach an internal redirect with some Vary header > already set, maybe we should never drop it, thus internal redirects > should preserve Vary in any case... > > > > I'd prefer to limit the scope of the httpd configurations affected by this > change to the minimum, but the change would probably look less hacky :) > > > > > > After https://svn.apache.org/r1811744 trunk should be inline with what > the docs say, but I have another question now: a RewriteCond condition > (containing something like HTTP:someheader) adds a Vary header to the > response only if the condition evaluates to true, meanwhile a <If> > condition adds the Vary header regardless. Is there any good motivation for > this difference or they should be modified to be more consistent? The <If> > block behavior seems to be more sound (after reading > https://tools.ietf.org/html/rfc7231#section-7.1.4), but I'd like to hear > more expert opinions :) > > > > Thanks! > > > > Luca >
