Apache 使用.htaccess仅当存在具有特定值的标头时才允许请求

Apache 使用.htaccess仅当存在具有特定值的标头时才允许请求,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个案例,我想保护一些文件(列出目录和访问内容),除非存在特定的头并且该头包含正确的值 例如,如果存在名为“x-test-header”的报头,且其值为“abc123”,则让流量通过,否则返回403 我尝试过多种方法,例如: RewriteEngine On RewriteCond %{HTTP_x-test-header} !^abc123 RewriteRule ^.*$ - [R=403,L] 从某种意义上说,上面的方法可以阻止通信量,但当我使用REST客户机包含头时,它仍然返回4

我有一个案例,我想保护一些文件(列出目录和访问内容),除非存在特定的头并且该头包含正确的值

例如,如果存在名为“x-test-header”的报头,且其值为“abc123”,则让流量通过,否则返回403

我尝试过多种方法,例如:

RewriteEngine On

RewriteCond %{HTTP_x-test-header} !^abc123
RewriteRule ^.*$ - [R=403,L]
从某种意义上说,上面的方法可以阻止通信量,但当我使用REST客户机包含头时,它仍然返回403。很明显,我做得不对,有人能给我指出正确的方向吗


在AWS上使用Apache 2.4.33。

此规则适用于您:

RewriteCond %{HTTP:x-test-header} !^abc123$ [NC]
RewriteRule ^ - [F]

美丽的!除了HTTP与HTTP:在规则中,您的响应中的其他差异意味着什么?所以我很清楚到底发生了什么。非常感谢。其他变化很小,如
F
而不是
R=403,L
以及在模式中
^
之后删除不必要的
*
。我还在
abc123
之后添加了
$
,以确保我们只匹配这个字符串