我已经看到许多httpd.conf
包含如下指令的示例文件这是来自 IBM 的:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
事实上,在谷歌上搜索这个确切的短语“全部拒绝,全部允许”返回近 300 万个结果。
我对此指令的理解是,根据指定的Order
,Apache 会拒绝您访问,/server-status
无论您是谁,但随后会立即推翻该决定并允许您访问。这是正确的吗?上述指令与下一个指令之间是否存在功能(甚至理论或哲学)差异?
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Allow from all
</Location>
答案1
根据Apache 文档:
排序是以下之一:
允许否认 首先,评估所有 Allow 指令;至少必须有一个匹配,否则请求将被拒绝。接下来,评估所有 Deny 指令。如果有任何匹配,则请求将被拒绝。最后,任何不匹配 Allow 或 Deny 指令的请求都将被默认拒绝。
否认允许 首先,评估所有 Deny 指令;如果匹配,则请求将被拒绝,除非它还匹配 Allow 指令。任何不匹配任何 Allow 或 Deny 指令的请求都会被允许。
共同失败 此命令与“允许、拒绝命令”具有相同的效果,并且已被弃用。
在这种情况下,全部评估拒绝指令;如果匹配,则请求被拒绝,除非它也匹配全部允许指令。