微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 .htaccess 中阻止不需要的主机?

如何解决如何在 .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.comfoo.bar.example 不会匹配 foo.bar.example.com,但 example.combar.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 举报,一经查实,本站将立刻删除。