Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。order,顾名思义是顺序的意思,所以order命令可以决定deny和allow起作用的顺序,通俗的说就是谁排在最后那么谁就有最终的决定权。
order deny,allow和order allow,deny的区别也就显而易见了,前者的意思是先检查是否有deny命令,不论有没有都会再继续检查是否有allow规则,如果有,allow规则的内容可以覆盖掉deny规则。例如,
Order Allow,Deny
Allow from ip1
Deny from all
本意是想禁止ip1的访问,而允许其他所有ip访问,但显然用反了顺序,按照谁在后谁最大的原则,deny是掌握大权的人,所以deny from all就将allow的命令否决了。正确的写法应该是:
Order Deny,Allow //先检查Deny,并由Allow拍板
Deny from all //Deny命令要求禁止所有ip的访问
Allow from ip1 //Allow说只允许ip1访问
结果:只允许ip1访问网站,禁止其他所有ip的访问。
按照这个原则,还有如下应用。
禁止特定ip的访问
<Files 403.shtml> order allow,deny allow from all </Files> deny from 1.1.1.1 ;写要封的IP
禁止部分ip,其他的全部开放的两种写法
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2