【问题标题】:Blocking ip with htaccess使用 htaccess 阻止 ip
【发布时间】:2016-03-14 09:57:08
【问题描述】:

尝试阻止 IP 时,我有一个包含以下代码的 htaccess 文件:

DirectoryIndex index.php index.html

ErrorDocument 404 /errors.php

Order Allow,Deny
Deny from 188.143.232.
Allow from all

在浏览 www.example.com 时阻止我自己的 IP 有效,但不会阻止其他任何内容(如 www.example.com/index.php 或 www.example.com/home,...)。 htaccess 与 index.php(httpdocs 文件夹)位于同一目录中。

我怎样才能让它工作?

【问题讨论】:

  • 顺序是允许,拒绝,但你的允许语句在底部。
  • @Psoniax 这没什么区别。 Allow,deny 是使用以下语句的顺序。我还测试了更改顺序(首先允许,然后拒绝...),这不会改变任何行为

标签: .htaccess ip-blocking


【解决方案1】:

您还可以使用基于 mod-rewrite 的 ip-blocking 来阻止不需要的 ip:

RewriteEngine on

#--if client ip==188.143.232
RewriteCond %{REMOTE_ADDR} ^188\.143\.232
#--forbid the request
RewriteRule ^ - [F,L]

【讨论】:

  • 这确实可以正常工作。知道是什么让我的方法出现了奇怪的行为吗?这些方法之间有什么区别?如果我想添加一些其他IP,我总是添加两行,或者单独使用RewriteCond可以吗?
  • @Pepe 我认为允许和拒绝指令的顺序不正确。如果要阻止多个 ip,可以使用多个带有 OR 条件的 RewriteConds。 RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4 [OR] RewriteCond %{REMOTE_ADDR} ^2\.2\.3\.4
  • 这两种方法的区别是什么?此外,订单没有任何区别(如开篇文章中的 cmets 所述)。最后:阻止 IP 范围现在效果很好,范围内的每个 IP 都设法执行 1 个 GET 请求(所以每隔几分钟)。这是正常的,还是应该在访问日志中完全不可见?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2011-06-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多