拒绝通过基于http头的htaccess访问网站

我一直在努力争取这个工作,我不能把我的手指。 我想要做的就是根据CloudFlare添加的CF-IPCountry头阻止访问一个国家的网站。 我认为htaccess是一个合适的方法来做到这一点。

我们正在DirectAdmin的控制面板上运行LiteSpeed 4.2.4。

我们遇到的问题是htaccess规则似乎没有做任何事情。

这是我们尝试的规则:

SetEnvIf CF-IPCountry AU UnwantedCountry=1 Order allow,deny Deny from env=UnwantedCountry Allow from all 

这完全没有区别,连接仍然被接受。 只是为了检查规则是否至less正在被处理,我把Allow从All改为Deny,连接都被拒绝了。 所以这个variables似乎是一个问题。

这是与请求相关的相关头文件。

 Connection: Keep-Alive Accept-Encoding: gzip CF-Connecting-IP: xx.xx.xx.xx CF-IPCountry: AU X-Forwarded-For: xx.xx.xx.xx.xx CF-RAY: c9062956e2d04b6 X-Forwarded-Proto: http CF-Visitor: {"scheme":"http"} Zone-Name: xx.com.au 

希望有人能帮助我,这已经让我疯狂了太久。

谢谢

更新

现在我已经通过将RewriteLogLevel 9添加到虚拟主机来启用重写日志logging。

最初我用我所有其他的htaccess规则进行了testing,这些规则对于这个站点来说相当广泛,我可以看到所有的匹配都被logging下来,所以我知道日志logging是正确的。

为了testing这种情况,我将htaccess剥离为裸露的骨头,所以我在我的htaccess中有以下内容:

 SetEnvIf CF-IPCountry AU UnwantedCountry=1 Order allow,deny Deny from env=UnwantedCountry Allow from all 

在我的htaccess中就是这样,根本没有日志输出,这对我来说就是不符合我猜测的规则。 我再次validation了“CF-IPCountry:AU”出现在头文件中。

作为使用SetEnvIf的替代方法,您也可以使用RewriteRule来执行此操作。

 RewriteCond %{HTTP:CF-IPCountry} ^(AU|SE)$ RewriteRule ^ - [F,L] 

这将阻止AU和SE用户。