Re: [PATCH v7 1/3] tests: Adjust the configuration for Apache 2.2
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- May 9, 2016, 14:03 UTC
- Message-ID
- <alpine.DEB.2.20.1605091557050.4092@virtualbox>
- In-Reply-To
- <20160509080315.GA14383@sigill.intra.peff.net>
Hi Peff,
On Mon, 9 May 2016, Jeff King wrote:
Show 23 quoted lines
> 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