apache - 拒绝来自文件中的 ip 的访问

标签 apache .htaccess

是否存在拒绝访问特定文件中每个 IP 的 .htaccess 命令? 假设我有一个名为 bans.txt 的文件(位于我的 .htaccess 文件旁边),其中包含一个简单的 ip 列表,一个在另一个之下。我想拒绝访问该文件中的每个 IP。有没有一个简单的 .htaccess 命令可以做到这一点?像这样的东西:

Deny from bans.txt

我一直在寻找,但我认为没有,但只是检查一下,谢谢。

最佳答案

实际上,有一种纯粹从 Apache 完成此任务的巧妙方法。您需要使用名为 RewriteMap 的功能

1 - 首先通过 httpd.conf 启用 mod_rewrite 和 .htaccess,然后将此代码放入 httpd.conf 中以启用 RewriteMap称为ipmap:

RewriteMap ipmap txt:/some/path/to/ipmap.txt

2 - 然后创建文本文件 /some/path/to/ipmap.txt,其中包含如下条目列出您要禁止的所有 IP:

192.168.0.1 1
192.168.0.4 1
10.119.35.8 1
...
...

3 - 反弹您的 Apache 进程(因为您已更改 httpd.conf)

4 - 最后将此代码放入 $DOCUMENT_ROOT 目录下的 .htaccess 中:

RewriteEngine On
RewriteBase /

# if IP is found in ipmap then return Forbidden error
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^1$
RewriteRule ^ - [F,L]

关于apache - 拒绝来自文件中的 ip 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662645/

相关文章:

java - 实现responseHandler接口(interface)

.htaccess 301 重定向活跃 - 然而 Google Analytics(实时)显示旧网站上有许多活跃访问者

php - 如何在我的主域上有一个 Django 应用程序,在子域上有一个 PHP 应用程序?

php - 两个 .htaccess 规则不能协同工作

.htaccess - 使用 .htaccess 重写 URL

php - 从 htdocs 外部运行我的 php 文件

apache-flex - BlazeDS Servlet 未通过代理响应

缺少 Apache 2.4 mod_auth_form

apache - 如何在 .htaccess 中为 IE 9 设置 HTTP header

css - 通过 mod_rewrite 网站速度提高 5 倍,但 CSS 图像已损坏