.htaccess禁止IP或IP段访问的方法【修正网络其它教程错误】

之前在网上看到过几篇所谓的在.htaccess中禁止IP访问的教程,但是很明显,发这些教程的人基本都是转载的,自己都不明白其含义,人云亦云,转载错误的教程,反过来误导他人。

禁止IP可以使用语句,分别为:

Order Allow,Deny

Order Deny,Allow

这两种的分别为,Order语句是Allow还是Deny,Order语句的不同,其对应的语句也不同;

如果使用Order Allow,Deny,可以使用下面的方法禁止IP访问(将IP替换为你要禁止的IP地址):

Order Allow,Deny
Allow from all
Deny from 255.255.255.255

如果使用Order Deny,Allow ,可以使用下面的方法禁止IP访问:

Order Deny,Allow
Deny from 255.255.255.255

通过上面可以看出,如果是Order Deny,Allow,下面没有Allow from all 语句,如果加上,会变成不禁止任何IP;

但是Order Allow,Deny却必须有Allow from all,否则就会变成禁止所有IP访问;

百度知道的解释:

Order Allow,Deny 代码的优先级是先执行Allow,然后再执行Deny,Deny默认执行未被Allow定义的部分。在你写的代码中,首先就Allow all 了,定义了所有IP都通过,也就不存在未被定义的部分了,后面再加上Deny,在里面写的IP都是无效的,Deny生效的部分只能是未被Allow定义的部分。所以,IP黑名单的正确写法应该是:
Order Deny,Allow
Deny from X.X.X.X
如上,就好。按照定义,优先执行Deny,未被定义的部分默认Allow。

原文摘自http://www.ssdax.com/2079.html