如何解决如何在 .htaccess 中阻止不需要的主机?
这些 .htaccess
规则有效:
<RequireAll>
Require all granted
Require not ip 1.22.333.444
.
.
.
</RequireAll>
这些 .htaccess
规则不起作用:
<RequireAll>
Require all granted
.
.
.
Require not host bad_host
</RequireAll>
这些 .htaccess
规则不起作用:
<IfModule mod_rewrite.c>
RewriteCond %{REMOTE_HOST} (163data|amazonaws|colocrossing|poneytel) [NC]
RewriteRule .* - [F,L]
</IfModule>
我写入了顶部的 .htaccess
文件:
HostnameLookups On
结果是一条错误消息,因为此命令在 .htaccess
中是不允许的。所以我删除了这个声明。
在Apache中,有一个“remote_host”对应某个IP。 我希望 tp 阻止不需要的主机访问我的网站,例如垃圾邮件发送者或其他在我的网站中产生大量无用流量的主机。
上面的代码示例有什么问题?
解决方法
HostnameLookups
需要在 server config 中设置才能设置 REMOTE_HOST
服务器变量。这不能在 .htaccess
中设置(如您所见)。默认情况下为 Off
,出于性能原因,通常在共享主机上永久禁用。
然而,Require [not] host bad_host
不依赖于 HostnameLookups
的设置,所以应该仍然有效(假设主机没有以某种方式禁用它)。请注意,bad_host
允许部分匹配,从 end 开始匹配,并且只匹配完整的主机段。例如。 ample.com
和 foo.bar.example
不会匹配 foo.bar.example.com
,但 example.com
和 bar.example.com
会匹配。
请注意,Require [not] host
会导致 Apache 执行“双重反向 DNS 查找”。首先从客户端 IP 地址查找主机名(反向 DNS 查找),然后对主机名进行正向查找以检查 IP 地址是否匹配。如果不匹配,则检查失败。
也许只检查 forward-dns
就足够了(需要 Apache 2.4.19)?这仅执行反向 DNS 查找以获取主机名。主机名未经验证。
例如:
Require not forward-dns example.com
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。