假设我想禁止某个特定的IP地址访问整个域名(+所有包含的子域名)。首先,我从以下代码段开始,将以下行添加到.htaccess文件中:
$info = 'Order Deny,Allow
Deny from' . IPtoBlock();
if (getIP()){
$htaccess = fopen('.htaccess', 'r+');
fwrite($htaccess, $info);
fclose($htaccess);
}
但将用户重定向到其他内容更相关吗?毕竟,尽管立即重定向,他仍然能够向服务器发出请求。
$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2');
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://www.google.com/");
}
还是简单地杀了这个页面?
$deny = array('192.168.1.0', '192.168.1.1', '192.168.1.2');
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
die('Access restricted');
}
解决此问题的最佳方法是什么?
答案 0 :(得分:2)
在jour .htaccess
:
Order Allow,Deny
Allow from all
Deny from 123.123.123.123
使用ip 123.123.123.123的用户将拥有403。
如果您想重定向到特定页面,请添加:
ErrorDocument 403 /forbidden.php
编辑:要在htaccess中禁止文本文件中的Ip,请查看此处:Ban IPs from text file using htaccess
答案 1 :(得分:0)
在.htacces
文件中:
Order Deny,Allow
Deny from all
Allow from xx.xx // This will be your local IP address
Allow from yy.yy.yy.yy // Your server IP address
除了这些情况,没有人可以访问您的网站。
答案 2 :(得分:0)
最好的方法是在它到达您的网络服务器之前阻止此尝试。这意味着阻塞在像iptables这样的级别上(防火墙;或者如果你不能这样做并使用负载均衡器,那么就阻止它)。