2016-03-12 52 views
0

我遇到很多问题,否认IP,我想阻止访问我的网站。经过大量的谷歌搜索和几个特里我来到这个几乎工作。我的意思几乎是因为当我把代码放在我的网站上时,所有的ccs都丢失了。 下面是代码:通过.htaccess拒绝IP不起作用

order allow,deny 
deny from xxx.xxx.x.xxx 

我尝试了很多的这个代码的版本 - 与所有允许,转换代码的第一部分订购否认,允许 - 和非真正起作用。只有我之前发布的那个。我怎样才能解决这个问题?

回答

0

您可以使用SetEnv和订单指令来拒绝IP地址。

SetEnvIf remote_addr ^xxx.xxx.x.xxx$ block=1 
Order allow,deny 
allow from all 
deny from env=block 
+0

我只是试过,但它仍然无法正常工作。我真的不明白这个。我在wordpress中有一些其他网站,它的工作原理非常完美,但是在这一个网站上,这是一项工作。是否有可能成为.htaccess的问题? –

0

您的代码基本上是说一切否认:
1:在第一轮(上允许)不匹配任何东西。
2:第二次通过(拒绝)给出一个匹配(拒绝的一次)
3:第三次通过表示将拒绝所有不匹配的请求。

试着这么做:

order deny,allow 
deny from 12.34.56.78 
deny from 78.56.34.12 
allow from all 

Order指令控制控制三通道门禁系统 see Apache docs

订购允许,拒绝如下所示:
1:所有允许指令都被评估;至少一个必须匹配,否则请求被拒绝。 2:所有Deny指令都被评估。如果有任何匹配,请求被拒绝。
3:默认情况下,拒绝与Allow或Deny指令不匹配的任何请求。

+0

仍然无法正常工作。就像我说的,在另一个网站上,基于“wordpress”,这种代码完美地工作。它可能是文件.htaccess或一些不允许我使用此代码的规则? –

0

也许这个IP没有REMOTE_ADDR,但另一IP报头如HTTP_X_FORWARDED_FOR或HTTP_CLIENT_IP

看看这将做的工作。

RewriteCond %{REMOTE_ADDR}     ^12.34.56.78 [OR] 
RewriteCond %{HTTP:VIA}      ^12.34.56.78 [OR] 
RewriteCond %{HTTP:FORWARDED}    ^12.34.56.78 [OR] 
RewriteCond %{HTTP:USERAGENT_VIA}   ^12.34.56.78 [OR] 
RewriteCond %{HTTP:X_FORWARDED_FOR}   ^12.34.56.78 [OR] 
RewriteCond %{HTTP:PROXY_CONNECTION}  ^12.34.56.78 [OR] 
RewriteCond %{HTTP:XPROXY_CONNECTION}  ^12.34.56.78 [OR] 
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR}  ^12.34.56.78 [OR] 
RewriteCond %{HTTP:HTTP_CLIENT_IP}   ^12.34.56.78 
RewriteRule ^(.*)$ - [F]