禁止 Apache 上某个网络的某些 IP?

禁止 Apache 上某个网络的某些 IP?

我想将所有内部网络 IP(仅内部网络“192.168.1.0”)重定向到错误页面,除了某些 IP,条件如下:

if ( IP_from_Network = 192.168.1.0 and ((IP != 192.168.1.4) or (IP != 192.168.1.5)
or (IP != 192.168.1.6)) )
{
redirect to an error page
}

所以我尝试使用 RewriteEngine 来实现这一点:

RewiteEngine On
RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.4$  [NC]
RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.5$  [NC]
RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.6$  [NC]
RewriteCond   %{REMOTE_ADDR}   ^192\.168\.1\.*$  [NC]
RewriteCond   %{REQUEST_URI}   ^/test/manager/.* [NC]
RewriteRule    ^(.*)$           -                 [R=404,L]

但这对我不起作用

我应该使用其他标签,如 [OR] 或 [AND] 吗?

更新:

目录标签:

<Directory /var/www/html/test>
  Order allow,deny
  Allow from 192.168.1
  RewriteEngine on
  RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.4$  [NC]
  RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.5$  [NC]
  RewriteCond   %{REMOTE_ADDR}   !^192\.168\.1\.6$  [NC]
  RewriteCond   %{REMOTE_ADDR}   ^192\.168\.1\.*$  [NC]
  RewriteCond   %{REQUEST_URI}   ^/test/manager/.* [NC]
  RewriteRule   ^(.*)$           -                 [R=404,L]
</Directory>

答案1

使用允许否认反而:

<Location /test/manager/>
  Order Deny,Allow
  Deny from  192.168.1.0/24
  Allow from 192.168.1.4 192.168.1.5 192.168.1.6
</Location>

请注意,这还允许任何其他 IP,我认为这不是您想要的。如果是这样,请交换 Order 并删除 Deny 行:

<Location /test/manager/>
  Order Allow,Deny
  Allow from 192.168.1.4 192.168.1.5 192.168.1.6
</Location>

相关内容