Apache의 특정 네트워크에서 특정 IP를 금지하시겠습니까?

Apache의 특정 네트워크에서 특정 IP를 금지하시겠습니까?

다음 조건의 일부 IP를 제외한 모든 내부 네트워크 IP(내부 네트워크 "192.168.1.0"만 해당)를 오류 페이지로 리디렉션하고 싶습니다.

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>

관련 정보