我经常看到这样的指令
Order allow,deny
Allow from all
据我了解,这项命令将授予所有人访问权限。我觉得这很烦人,因为我认为这与以下命令相同:
Order deny,allow
这个命令首先检查拒绝行,然后检查允许行,默认为允许。因此,基本上可以重写第一个命令以节省一行。这两个命令是否相同,还是它们的行为会有所不同?
相反的做法也应该有效:为了拒绝所有人访问,你可以重写
Order deny,allow
deny from all
到
Order allow,deny
那是对的吗?
答案1
你是对的。正如你所见Apache 文档允许顺序与其他系统(例如 iptables)略有不同,因为最后一场比赛是得到应用的内容。
所以你说得对,它们是等价的,但因为是常见的做法通常是更轻松因为这是你已经习惯的,但没有理由不按照你的建议去做。
当您指定时,Order Deny, Allow
它将评估所有拒绝规则,然后评估所有允许规则,如果请求与任何规则都不匹配,它将被接受。相反,如果您Order Allow, Deny
首先指定,它将评估所有允许规则,然后评估所有拒绝规则,如果请求与任何规则都不匹配,它将被拒绝。
答案2
顺序取决于你真正想要的,
说:
1)你需要每个人都能访问你的网站,但后来你决定除了一个或极少数主机之外的所有人都需要访问你的网站,那么-
Order allow,deny
Allow from all
Deny from excepthost.com
2)如果你不想让任何人访问,除了一个非常封闭的客户群体,那么-
Order deny,allow
deny from all
allow from excepthost.com