使用setenvif阻止目录访问

时间:2014-02-10 19:00:55

标签: apache .htaccess

我想使用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/
而不只是否认或阻止他们?

1 个答案:

答案 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

中的Apache配置

更新:根据评论,您可以在根.htaccess中使用此重写规则:

RewriteEngine On

RewriteCond %{REMOTE_ADDR} ^(2|5|6|7|8|9)\.
RewriteRule ^main(/|$) http://officeofstrategicinfluence.com/spam/ [NC,L,R]