2016-03-12 139 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]