apache网站能实现通过来路ip访问404的次数,直接在访问层禁止来路ip访问吗? 
问题解释:同一ip,大量扫描网站不存在的文件,出现404报错。
所以产生上边的想法,想直接通过apache服务层或者php的服务层就锁定同ip出现404报错的人,直接禁止访问。或一段时间内禁止访问。
请教,如果操作?

解决方案 »

  1.   

    在 .htaccess 文件里加入
    ErrorDocument 404 /404.php
    order deny,allow
    deny from ip列表(用空格分开)由于修改 .htaccess 文件后无需重启 apache
    可以在 404.php 中记录 $_SERVER['REMOTE_ADDR'] 和 将 $_SERVER['REMOTE_ADDR'] 加入 ip列表
      

  2.   

    现在问题不是404页面,而是一个流程问题,首先,来路访问你服务器一个不存在的页面,那么,服务器响应,然后判断文件是否存在,不存在,返回404.
    现在就是想在php处理之前就禁用他访问。而且还有个问题,ht的话只能是说通过手动指定,你的意思难道是让我写ip进到.ht文件吗?那这样会不会出现我说的那种流程,如果不会那肯定就满足要求了,不然还是走php判断那就不对了
      

  3.   

    apache 本身没有提供用户交互功能,所以只能通过配置文件来影响他的行为ErrorDocument 404 /404.php
    用来通知 apache 当发现不存在的文件时的处理程序(默认是返回404页)order deny,allow
    deny from ip列表
    用来通知 apache 哪些ip被禁用了,不去响应他们需要注意的是:这个 404.php 是 apache 的工作程序,而不是 web 程序
      

  4.   

    哦,那在请教一下,像我刚才说的,如果我想提取出通过大量扫描出现返回404状态的ip,把他加入到deny的列表,那会不会出现像cc攻击的情况,把.ht文件弄的过大了?据说好像.ht文件太大也会影响性能,是这样吗