apache配置<Files> <FilesMatch> <locations><locationsMatch>指令
<Files> 指令
說明 包含作用於匹配指定(dìng)文件名的指令
語法 <Files filename> ... </Files>
作用域 server config, virtual host, directory, .htaccess
覆蓋項 All
狀態 核心(C)
模塊 core
<Files>指令提供了基於文件名的訪問控製,類(lèi)似於<Directory>和<locations>指令。它將配對一個</Files>指令。在此配置段中定義的(de)指令將作用於其基本名稱(chēng)(不是完整的路徑)與指定的文件名相符的對象。<Files>段將根據它們在配置文件中出現的順序(xù)被處理:在<Directory>段和.htaccess文件被處(chù)理之後,但在<locations>段之前。請注(zhù)意(yì):<Files>能嵌入(rù)到<Directory>段中以限製它們作(zuò)用的文件係統範圍。
filename參數應當是一個文件名或是一個包含通配符(fú)的字符串,其中"?"匹配任何單個字符,"*"匹配任何(hé)字符串序列。在(zài)"~"字符之後同樣可以使用正則表達式。比如:
<Files ~ "\.(gif|jpe?g|png)$">
將匹配(pèi)絕大部分常見的因特網圖(tú)象格式。然而在Apache1.3及其(qí)後繼版本中,更推薦使用<FilesMatch>指令。
請注意與<Directory>和(hé)<locations>配置段不同的是:<Files>配置段可(kě)用於.htaccess文件(jiàn)當中。這將允許用戶在文件層麵上控製對它們自己文件的訪問。
<FilesMatch> 指令(lìng)
說明 包含作用於與正則表達式(shì)匹配(pèi)的文件名的指令(lìng)
語法 <FilesMatch regex> ... </FilesMatch>
作用域 server config, virtual host, directory, .htaccess
覆蓋項 All
狀態 核心(C)
模塊 core
<FilesMatch>指令就像<Files>指令一樣提供了針對文件名的訪問控製。然而,它使用的是正則表達式。比如說:
<FilesMatch "\.(gif|jpe?g|png)$">
將匹(pǐ)配最(zuì)常見的internet圖形文件格式(shì)。
Include 指令
說(shuō)明 在服務(wù)器(qì)配置文件中包含其它配置文件
語法 Include file-path|directory-path
作用域 server config, virtual host, directory
狀態 核心(C)
模塊 core
兼容性 通配符僅在Apache 2.0.41 及以後的版本中可用
這個(gè)指令允許在服務器配置文件中加入其它配置文件。
Shell風格(fnmatch())的(de)通配符可以用於按照字母順序一次包含多個(gè)文(wén)件。另外,如果Include指向了一個目(mù)錄而不是一個文件,Apache將讀入(rù)該目錄及其子目錄下的所有文件(jiàn),並依照字(zì)母順序將(jiāng)這些文件作為配(pèi)置文件進行解析。但(dàn)是並不推薦這麽做,因為偶(ǒu)爾會有臨時文件在這個目錄中生成,從而導致httpd啟動失敗。
文(wén)件的路徑可以是(shì)一個完整的(de)絕對路(lù)徑(以一個斜杠開頭):
Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf
或是相對於ServerRoot目錄的相對路徑:
Include conf/ssl.conf
Include conf/vhosts/*.conf
請確(què)保包含的目錄中(zhōng)不包含任何諸如編輯(jí)器臨時文(wén)件等引起誤導(dǎo)的文件,因為Apache會(huì)嚐試(shì)讀取它們並把其中的(de)內(nèi)容作為配置指令來處理,這樣(yàng)可能會導致啟動過程的失敗(bài)。運行apachectl configtest 將會把配置檢查時所使用的所有文件列出來以供參考(kǎo)。這將有助於檢驗配置中是否僅包(bāo)含了您所希望出現那些文件。
root@host# apachectl configtest
Processing config file: /usr/local/apache2/conf/ssl.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost1.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost2.conf
Syntax OK
<locations> 指令
說(shuō)明(míng) 將封裝的(de)指令作(zuò)用於匹配的URL
語法 <locations URL-path|URL> ... </locations>
作用域 server config, virtual host
狀態 核心(C)
模塊 core
<locations>提供了基於URL的訪問控製。與<Directory>指令類似,它也會啟用一個以</locations>結尾的(de)配置段。<locations>配置段的處理位於<Directory>, .htaccess, <Files>之後,並依照在配置文件中出現的順序進行處理。
<locations>配置段完全獨立於文件係統之外操作。這有幾個重要的後(hòu)果。最重(chóng)要的(de)是<locations>不能用於針對文件係統的訪問控製。因為可能會(huì)有幾(jǐ)個不同的URL指向文件係(xì)統中的同一個文件,所以這(zhè)樣的控製常(cháng)常會被很容易的繞過。
何時使用<locations>?
使用<locations>來將指令應用於獨立於文(wén)件係統之外的內容(róng)。文件係統之內的內容請使(shǐ)用<Directory>和<Files>指令。不過一個例外是<locations /> ,它可以方便的作用(yòng)於所用URL。
對所有的(de)原始(非代理)請求來說,匹配的URL應該是具有"/path/"形式的URL路(lù)徑。不包括訪問方(fāng)法、主機名、端口或查詢字符串等。對於代理的請求,匹配的URL必須為"scheme://servername/path"的形式,而且(qiě)必須包括前綴。
URL可(kě)以用一個通配符字符串來進行通配符的處理。"?"匹配任何單個的字符,而"*"匹配所有字符序列(liè)。
也可以附加"~"字符來表示使用正則表達式(shì)。例如:
<locations ~ "/(extra|special)/data">
將匹配所有包含字符串"/extra/data"或"/special/data"的URL。在Apache1.3及其後續版本中,加入了一個新(xīn)的推薦使用的<locationsMatch>指令,其功能(néng)與(yǔ)<locations>的正則表達式版本相同。
<locations>的(de)功能在與SetHandler指令聯用時能發揮最大(dà)效能。比(bǐ)如啟用狀態(tài)請求,但僅對來自foo.com的用戶起效,您可以這樣使用:
<locations /status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from .foo.com
</locations>
請注意"/"(斜線)
斜線字符根據它在URL中出現的位置不(bú)同有著特殊的(de)意義。大家可能都已經習慣在文(wén)件係統中,多個連續的斜線會被作為單一的斜(xié)線處理(例如"/home ///foo"與"/home/foo"相同)。但在URL裏(lǐ)麵,這樣是行(háng)不通的。<locationsMatch>指令和正則表(biǎo)達式版本的<locations>要求您明確使用多重斜線。比如:<locationsMatch ^/abc>將匹配請(qǐng)求"/abc"但不會匹配(pèi)請求"//abc"。而非正則表達式版(bǎn)本的<locations>指令在用(yòng)於代理請求時,也有類似表現。但當非正則表達式版本的<locations>作(zuò)用於非代理請求時(shí),它會將多個毗鄰的斜線認作單個斜(xié)線。比如,如果您指定了<locations /abc/def>而請求是指向"/abc//def"的,那麽它們就是匹配的。
<locationsMatch> 指(zhǐ)令
說明 將封裝的指令作用於正則表達式匹配的URL
語法 <locationsMatch regex> ... </locationsMatch>
作用域(yù) server config, virtual host
狀(zhuàng)態 核心(C)
模塊 core
<locationsMatch>和<locations>指令相同,提供了基於URL的訪問(wèn)控(kòng)製。但它使用正則表達式作為參數(shù),而不是簡單字符串。比如:
<locationsMatch "/(extra|special)/data">
將匹配包含子串"/extra/data"或"/special/data"的URL。
關鍵(jiàn)詞:apache
閱讀本文後您有什麽感(gǎn)想? 已有 人給出評價!
- 35
- 705
- 48
- 101
- 114
- 50