• 从集合的角度理解Order Allow Deny语句

    Allow Deny的合集就是全集
    服务器君一共花费 89.433 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    看完前面两个小节的内容,应该对 Order Allow Deny 语句的使用没什么问题吧。这里,我们用集合的概念继续加深对它们的理解。

    用集合来理解 Order Allow Deny

    Order A, B   (其中,A和B均可以代表allow或者deny,以下conlist表示控制列表)
    A from conlist1 
    B from conlist2
    

    那么最终访问控制的结果为:(以(A)表示A的控制范围)

    (A)= (conlist1) U (!conlist2)  (!--取反,U--并集,n--交集)
    (B)= (!A) = (!conlist1) n (conlist2)
    (A)+(B)= I(全集)
    

    下面有一个图简单表示了allow与deny的范围关系:

    比如:

    Order allow,deny
    Allow from 192.168.10.0
    Deny from 192.168.10.1
    

    (Allow) = 192.168.10.0 网段中除 192.168.10.1 之外的IP地址。

    (Deny) = 192.168.10.1 + 192.168.10.0 网段之外的IP地址。

    Order后面allow和deny的顺序与下面Allow from和Deny from的顺序无直接关系。最终求得的范围是根据Order那一行的顺序来写的。即上面例子的结果等同于:

    Order allow,deny
    Deny from 192.168.10.1
    Allow from 192.168.10.0
    

    如果在order之后并没有定义具体的allow或deny的访问控制列表,则默认以后者为准。

    几个例子

    Order allow,deny
    deny from 219.204.253.8
    allow from all
    

    根据集合图,deny 为绿色部分,只有219.204.253.8不能通行。

    Order allow,deny
    deny from all
    allow from 219.204.253.8
    

    同样,deny from all 这句让绿色占满全屏,即全部都不能通行。

    order allow,deny
    allow from 218.20.253.2
    deny from 218.20
    

    Deny 与 Allow 的交集就是 allow 的本身,所以还是表示全部都拒绝。

    • 是不是用集合图的概念之后比较容易理解了?另外 Order Deny Allow 也是类似的图,可以自己尝试去画一画就知道了。
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [计算机算法] 从双端队列引出的卡特兰数 3 个条目
  2. [软件工程与项目管理] 浏览器初步介绍 8 个条目
  3. [移动开发] Android与SQLite数据库 7 个条目
  4. [移动开发] Android根基概念Context 8 个条目
  5. [软件工程与项目管理] 呈现树的构建 13 个条目
  6. [PHP程序设计] PHP数组的遍历 7 个条目
  7. [数据结构] 图的定义 1 个条目
  8. [智力开发与知识管理] 学习编程为什么没会这么难? 7 个条目
  9. [Python程序设计] Python数据类型 11 个条目
  10. [PHP程序设计] PHP里的布尔类型 3 个条目
  11. [Python程序设计] urls.py设置技巧 8 个条目
  12. [Python程序设计] Tornado源码解析 23 个条目
窗口 -- [资讯]