我想将所有内部网络 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>