Hi Peff,
On Mon, 9 May 2016, Jeff King wrote:
> On Mon, May 09, 2016 at 08:18:52AM +0200, Johannes Schindelin wrote:
>
> > +# Apache 2.2 does not understand <RequireAll>, so we use RewriteCond.
> > +# And as RewriteCond unfortunately lacks "not equal" matching, we use this
> > +# ugly trick to fail *unless* the two headers are present.
> > +RewriteCond %{HTTP:x-magic-one} =abra
> > +RewriteCond %{HTTP:x-magic-two} =cadabra
> > +RewriteRule ^/smart_headers/.* - [L]
> > +RewriteRule ^/smart_headers/.* - [F]
> > +
>
> Thanks, this is the magic that eluded me earlier. I had to look up the
> flags, so for any observers in the same boat, this works because:
>
> - the '[L]' flag says "stop doing any more rewrite rules"; it triggers
> only when the RewriteConds above match
>
> - the '[F]' flag says "return 403 Forbidden"; it triggers always,
> because after a RewriteRule, all RewriteConds are reset
>
> I'm sure that is all apparent to somebody who is familiar with Apache
> config, but I think that does not include most people on this project. I
> dunno if it is worth a comment here or in the commit message.
Oh, you're absolutely correct, I should have described this better. It
took me quite a couple of iterations to get it right, after all.
How about this:
As RewriteCond does not allow testing for *non*-matches, we simply
match the desired case first and let it pass by marking the
RewriteRule as '[L]' ("last rule, do not process any other
matching RewriteRules after this"), and then have another
RewriteRule that matches all other cases and lets them fail via
'[F]' ("fail").
Good enough?
Ciao,
Dscho
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html