Ubuntu 10.04.4 LTS
Apache 2.2.14
ISPConfig 3.0.4.2
我们的一个客户端有一个旧的 Web 服务器,该服务器不断地因可能欺骗其用户代理的恶意机器人/蜘蛛而崩溃。我已经尝试了几乎所有我能想到的 htaccess 配置来尝试阻止它们爬取站点,但无济于事。
此时,我正在尝试通过 .htaccess 阻止单个 IP,但似乎没有任何效果。
我在 vhost 配置文件中将 AllowOveride 设置为“全部”:
<Directory /var/www/<this_website>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
我启用了以下模组:
ls -x /etc/apache2/mods-enabled/
actions.conf actions.load alias.conf alias.load auth_basic.load auth_digest.load
authn_file.load authz_default.load authz_groupfile.load authz_host.load authz_user.load autoindex.conf
autoindex.load cgi.load dav_fs.conf dav_fs.load dav.load deflate.conf
deflate.load dir.conf dir.load env.load expires.load fcgid.conf
fcgid.load include.load mime.conf mime.load negotiation.conf negotiation.load
php5.conf php5.load reqtimeout.conf reqtimeout.load rewrite.load ruby.load
setenvif.conf setenvif.load ssl.conf ssl.load status.conf status.load
suexec.load suphp.conf suphp.load
以及 webroot 中 .htaccess 文件的片段:
...
order allow,deny
Allow from all
Deny from 180.76.6.45
...
我已通过在阻止列表底部添加“全部拒绝”来验证正在读取 .htaccess 文件。使用浏览器访问主页后,我得到了预期的 Apache“禁止访问”页面。但是,在查看访问日志时,在编写 .htaccess 很久之后,我仍然看到以下内容......
180.76.6.45 - - [15/Oct/2014:19:22:24 +0000] "GET /legacy HTTP/1.1" 403 0 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
列表中的所有其他 IP 也是如此。为什么我的“拒绝 IP”指令被忽略?
最佳答案
您的 IP block 正在工作 ;-)
Apache 访问日志报告页面访问成功和失败。失败不是错误。错误是指 Apache 无法成功执行指令、加载模块或某些此类错误。
“请求路径协议(protocol)”字符串 "GET /legacy HTTP/1.1"
后面的返回码, 是 403
- 这意味着“禁止”,换句话说,访问被拒绝。我不知道你的日志格式,所以我不能确定,但“403”之后的值可能是返回的字节数,它应该是零。
关于apache - .htaccess Deny from <IP> 规则被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26390665/