我想使用SetEnvIf
来阻止对特定IP地址的目录访问
这就是我想出来的。
<Directory /main>
order allow,deny
SetEnvIf Remote_Addr ^(2|5|6)\. banned [OR]
SetEnvIf Remote_Addr ^(7|8|9)\. banned
allow from all
deny from env=banned
</Directory>
(2|5|6)\.
和(7|8|9)\.
是通配IP地址示例,
我试图阻止这些范围访问我服务器上的main
目录
但不确定[OR]
和通配IP地址是否有效
另外,我如何将banned
重定向到http://officeofstrategicinfluence.com/spam/
而不只是否认或阻止他们?
答案 0 :(得分:0)
[OR]
不能像您使用的那样使用,但它可以按照正则表达式语法使用。试试这段代码:
<Directory /main>
SetEnvIf Remote_Addr ^(2|5|6|7|8|9)\. banned
order allow,deny
allow from all
deny from env=banned
</Directory>
另请注意,<Directory>
指令仅适用于不在.htaccess
更新:根据评论,您可以在根.htaccess
中使用此重写规则:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^(2|5|6|7|8|9)\.
RewriteRule ^main(/|$) http://officeofstrategicinfluence.com/spam/ [NC,L,R]