有的时候,我们会不想某个IP或者某个IP段访问我们的网站,原因嘛,很多,你懂就行。好了,我们来看看具体怎么操作吧。
在Apache环境下,.htaccess的作用是非常强大的,我们今天也是利用.htaccess来操作。
用代码编辑器NotePad++打开网站根目录的.htaccess,如果没有的话,去百度搜索.htaccess生成一个就好,然后把下面的代码添加到文档最后:
Order Allow,Deny Allow from all Deny from 88.88.88.88
上面的代码意思就是禁止IP为88.88.88.88的用户访问我们的网站。
如果是要禁止某一个IP段访问我们的网站的话,该怎么写代码呢?
Order Allow,Deny Allow from all Deny from 88.88.88.88 99.99.99.99
上面的代码就是禁止了88.88.88.88到99.99.99.99这个IP段的所有访问。
需要注意的是,Apache会按照order决定最后使用哪一条规则,Order后面的Allow和Deny两个的顺序非常重要。如果弄反了,会导致规则不能生效。
下面云测速来举个错误写法的例子:
Order Deny,Allow Allow from all Deny from 88.88.88.88
上面的代码,我们本来是想禁止88.88.88.88这个IP访问我们的网站的,但是由于Allow是最后的规则,所以Apache执行到第二句Allow的时候已经执行成功了,就不会再去看第三句。所以上面的代码是默认执行允许所有访问的。
总结
影响最终判断结果的只有两点:
1. order语句中allow、deny的先后顺序;
2. allow、deny语句中各自包含的范围。
温馨提示:
1、修改完.htaccess里面的规则以后,需要保存好以后,重启Apache服务,配置才能生效。
2、开头的字母不区分大小写的。
3、order语句中,"Allow,Deny"之间只有一个逗号(英文格式),而且先后顺序极其重要。
4、Apache有一条缺省规则,“order allow,deny”本身就默认了拒绝所有的意思,因为deny在allow的后面;同理,“order deny,allow”本身默认的是允许所有;当然,最终判断结果还要综合下面的allow、deny语句中各自所包含的范围;(也就是说order语句后面可以没有allow、deny语句)。
5. allow、deny语句中,第二个单词一定一定要是“from”,不然Apache会出错而导致无法启动。
6、“order allow,deny”代表先判断allow语句再判断deny语句,反之亦然。