Re: [PATCH v7 1/3] tests: Adjust the configuration for Apache 2.2
From: Johannes Schindelin <hidden>
Date: 2016-06-16 02:19:15
Hi Peff, On Mon, 9 May 2016, Jeff King wrote:
On Mon, May 09, 2016 at 08:18:52AM +0200, Johannes Schindelin wrote:quoted
+# 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