說明: 控制哪些主機能夠存取伺服器的一個區域語法: Allow from all|host|env=env-variable [host|env=env-variable] ...
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access
Allow指令影響哪些主機可以存取伺服器的一個區域。可以用主機名稱、IP位址、 IP位址範圍或其他環境變數中擷取的客戶端請求特性來對存取進行控制。
這個指令的第一個參數總是from。隨後的參數可以有三種不同形式。 如果指定Allow from all,則允許所有主機訪問,需要Deny和Order指令像下面討論的那樣配置。 要只允許特定一部分主機或主機群組存取伺服器,host可以用下面任何一種格式來指定:
一個網域(部分)
例:Allow from apache.org
允許名字與給定字串匹配或以該字串結尾的主機存取。 只有完整的名字組成部分才被匹配,因此上述例子將匹配foo.apache.org而不能匹配fooapache.org。 這樣的配置將會造成伺服器執行一個對客戶IP位址的反查網域操作而不管HostnameLookups指令是否設定完整的IP位址範例:Allow from 10.1.2.3
允許一個主機的一個IP位址存取。
部分IP位址範例:Allow from 10.1
IP位址的開始1到3個位元組,用於子網路限制。
網路/遮罩對範例:Allow from 10.1.0.0/255.255.0.0
一個網路abcd,和一個掩碼wxyz。用於更精確的子網路限制。
網路/nnn 無內別域間路由規格範例:Allow from 10.1.0.0/16
同前一種情況相似,除了遮罩由nnn個高位元組構成。
注意以上後三個例子完全符合同一組主機。
IPv6位址和IPv6子網路可以像下面這樣指定:
Allow from fe80::a00:20ff:fea7:ccea
Allow from fe80::a00:20ff:fea7:ccea/10
Allow指令的第三種參數格式允許對伺服器的存取由環境變數的一個擴充指定。指定Allow from env=env-variable時,如果環境變數env-variable存在則存取請求被允許。 使用由mod_setenvif提供的指令,伺服器用一種基於客戶端請求的彈性方式提供了設定環境變數的能力。 因此,這條指令可以用來允許基於像User-Agent(瀏覽器類型)、Referer或其他Http請求頭欄位的存取。
例子:
SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>
在這種情況下,發送以KnockKnock/2.0開頭的用戶代理標示的瀏覽器將被允許訪問,而所有其他瀏覽器將被禁止訪問。
Deny 指令說明: 控制哪些主機被禁止存取伺服器語法: Deny from all|host|env=env-variable [host|env=env-variable] ...
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access
這條指令允許基於主機名稱、IP位址或環境變數限制對伺服器的存取。 Deny指令的參數設定和Allow指令完全相同。
Order 指令說明: 控制缺省的存取狀態和Allow與Deny指令被評估的順序。
文法: Order ordering
預設值: Order Deny,Allow
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access
Order指令控制缺省的存取狀態和Allow與Deny指令被評估的順序。 Ordering是以下幾種範例之一:
Deny,Allow
Deny指令在Allow指令之前被評估。缺省允許所有訪問。 任何不符合Deny指令或符合Allow指令的客戶都被允許存取伺服器。
Allow,Deny
Allow指令在Deny指令之前被評估。缺省禁止所有訪問。 任何不符合Allow指令或符合Deny指令的客戶都將被禁止存取伺服器。
Mutual-failure
只有出現在Allow清單並且不出現在Deny清單中的主機才被允許存取。 這種順序與Order Allow,Deny具有同樣效果,不贊成使用,它包括了哪一種配置。
關鍵字只能用逗號分隔;它們之間不能有空格。注意在所有情況下每個Allow和Deny指令語句都將被評估。
在下面的例子中,apache.org域中所有主機都允許訪問,而其他任何主機訪問都被拒絕。
Order Deny,Allow
Deny from all
Allow from apache.org
在下面範例中,apache.org域中所有主機,除了foo.apache.org子域包含的主機被拒絕存取以外,都允許存取。 而所有不在apache.org網域中的主機都不允許訪問,因為預設狀態是拒絕對伺服器的存取。
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
另一方面,如果上個範例中的Order指令改變為Deny,Allow, 將允許所有主機的存取。這是因為,不管設定檔中指令的實際順序為何, Allow from apache.org指令會最後被評估到並覆寫先前的Deny from foo.apache.org。所有不在apache.org 域中的主機也允許存取是因為缺省狀態被改變到了允許。
即使沒有伴隨Allow和Deny指令,一個Order 指令的存在也會影響到伺服器上某一個部分的訪問, 這是由於他對缺省訪問狀態的影響。例如,
<Directory /www>
Order Allow,Deny
</Directory>
這樣將會禁止所有對/www目錄的訪問,因為缺省狀態將被設定為拒絕.
Order指令只在伺服器設定的每個段內部控制存取指令的處理。 這暗示著,例如,一個在<Location>段出現的Allow或Deny指令總是將會在一個<Directory>段或.htaccess檔中出現的Allow或Deny 指令之後被評估,而不管Order指令中的設定為何。要了解配置段落合併的詳細信息, 請參閱How Directory, Location and Files sections work相關文件。