<address id="thnfp"></address>

    <address id="thnfp"><th id="thnfp"><progress id="thnfp"></progress></th></address>
    <listing id="thnfp"><nobr id="thnfp"><meter id="thnfp"></meter></nobr></listing>
    以文本方式查看主題

    -  安易免費財務軟件交流論壇  (http://m.gangyx.cn/bbs/index.asp)
    --  電腦知識交流  (http://m.gangyx.cn/bbs/list.asp?boardid=11)
    ----  [轉帖]Apache 的 order deny allow 設置  (http://m.gangyx.cn/bbs/dispbbs.asp?boardid=11&id=23473)

    --  作者:qiuwenhua8
    --  發布時間:2009/8/11 10:20:06
    --  [轉帖]Apache 的 order deny allow 設置


    Apache 的 order deny allow 設置

        Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用來控制目錄和文件的訪問授權。
        所以,最常用的是:
        Order Deny,Allow
        Allow from All

        注意“Deny,Allow”中間只有一個逗號,也只能有一個逗號,有空格都會出錯;單詞的大小寫不限。

        上面設定的含義是先設定“先檢查禁止設定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止訪問的設定,直接就是允許所有訪問了。這個主要是用來確;蛘吒采w上級目錄的設置,開放所有內容的訪問權。

        按照上面的解釋,下面的設定是無條件禁止訪問:
        Order Allow,Deny
        Deny from All

        如果要禁止部分內容的訪問,其他的全部開放:
        Order Deny,Allow
        Deny from ip1 ip2
        或者
        Order Allow,Deny
        Allow from all
        Deny from ip1 ip2

        apache會按照order決定最后使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了訪問,但由于在order中allow不是最后規則,因此還需要看有沒有deny規則,于是到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的“最后”規則非常重要,下面是兩個錯誤的例子和改正方式:

        Order Deny,Allow
        Allow from all
        Deny from domain.org
        錯誤:想禁止來自domain.org的訪問,但是deny不是最后規則,apache在處理到第二句allow的時候就已經匹配成功,根本就不會去看第三句。
        解決方法:Order Allow,Deny,后面兩句不動,即可。

        Order Allow,Deny
        Allow from ip1
        Deny from all
        錯誤:想只允許來自ip1的訪問,但是,雖然第二句中設定了allow規則,由于order中deny在后,所以會以第三句deny為準,而第三句的范圍中又明顯包含了ip1(all include ip1),所以所有的訪問都被禁止了。
        解決方法一:直接去掉第三句。
        解決方法二:
        Order Deny,Allow
        Deny from all
        Allow from ip1

        總結:Order Deny,Allow中,后一個是一定會被執行的(有相應的allow或deny語句時),如果沒有則按照語義分析。

        本文來自“十萬個為什么”電腦學習網 http://www.why100000.com


    Channel