nee*_*ter 0 httpd .htaccess litespeed
我一直在努力让它发挥作用,但我无法解决它。我想要做的是根据 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
Run Code Online (Sandbox Code Playgroud)
这根本没有区别,连接仍然被接受。只是为了检查规则是否至少正在处理,我将允许从全部更改为从全部拒绝,并且连接被拒绝。所以这似乎是变量的问题。
这是请求中的相关标头。
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
Run Code Online (Sandbox Code Playgroud)
希望有人能帮助我,这让我发疯太久了。
谢谢
更新
我现在通过将 RewriteLogLevel 9 添加到虚拟主机来启用重写日志记录。
最初我使用我所有其他的 htaccess 规则运行测试,这些规则对于这个站点来说非常广泛,我可以看到所有的匹配项都被记录下来,所以我知道日志记录工作正常。
为了测试这个案例,我将我的 htaccess 剥离到裸露的骨头,所以我的 htaccess 中有以下内容:
SetEnvIf CF-IPCountry AU UnwantedCountry=1
Order allow,deny
Deny from env=UnwantedCountry
Allow from all
Run Code Online (Sandbox Code Playgroud)
在我的 htaccess 中,根本没有日志输出,这对我说它根本不符合我猜测的规则。我再次验证标题中存在“CF-IPCountry: AU”。
小智 5
作为使用的替代方法,SetEnvIf
您也可以使用 a 来执行此操作RewriteRule
。
RewriteCond %{HTTP:CF-IPCountry} ^(AU|SE)$
RewriteRule ^ - [F,L]
Run Code Online (Sandbox Code Playgroud)
这将阻止 AU 和 SE 用户。
归档时间: |
|
查看次数: |
3426 次 |
最近记录: |