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