指令索引
- AcceptPathInfo
- AccessFileName
- AddDefaultCharset
- AddOutputFilterByType
- AllowOverride
- AuthName
- AuthType
- CGIMapExtension
- ContentDigest
- DefaultType
- <Directory>
- <DirectoryMatch>
- DocumentRoot
- EnableMMAP
- ErrorDocument
- ErrorLog
- FileETag
- <Files>
- <FilesMatch>
- ForceType
- HostnameLookups
- IdentityCheck
- <IfDefine>
- <IfModule>
- Include
- KeepAlive
- KeepAliveTimeout
- <Limit>
- <LimitExcept>
- LimitRequestBody
- LimitRequestFields
- LimitRequestFieldSize
- LimitRequestLine
- LimitXMLRequestBody
- <Location>
- <LocationMatch>
- LogLevel
- MaxKeepAliveRequests
- NameVirtualHost
- Options
- Require
- RLimitCPU
- RLimitMEM
- RLimitNPROC
- Satisfy
- ScriptInterpreterSource
- ServerAdmin
- ServerAlias
- ServerName
- ServerPath
- ServerRoot
- ServerSignature
- ServerTokens
- SetHandler
- SetInputFilter
- SetOutputFilter
- TimeOut
- UseCanonicalName
- <VirtualHost>
AcceptPathInfo 指令
說明: | 接受附加路徑名信息 |
---|---|
語法: | AcceptPathInfo On|Off|Default |
默認值: | AcceptPathInfo Default |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
兼容性: | Apache 2.0.30或更新版本 |
此指令決定了是否接受包含在某確定文件(或是某現有目錄的一個不存在的文件)後附加的路徑信息。此路徑信息將在腳本里以PATH_INFO環境變量的形式出現。
比如說,假設/test/
所指向的目錄下只包括一個文件:here.html
。那麼對/test/here.html/more
和/test/nothere.html/more
的請求都會得到/more
這樣的PATH_INFO變量。
AcceptPathInfo
指令的三個參數爲:
off
- 僅當一個請求映射到一個真實存在的路徑時,它纔會被接受。這樣,如上述
/test/here.html/more
這樣的在真實文件名後跟隨一個路徑名的請求將會返回一個404 NOT FOUND錯誤。 on
- 如果前面的路徑映射到一個真實存在的文件,此請求將被接受。如果
/test/here.html
映射着一個有效的文件,上例中/test/here.html/more
這個請求就會被接受。 default
- 對於附加路徑名的請求的處理方式由其對應的處理器來決定。對應普通文本的核心處理器默認會拒絕PATH_INFO。而用於伺服腳本的處理器,比如cgi-script和isapi-isa,默認會接受PATH_INFO。
AcceptPathInfo
指令存在的首要目的就是允許您覆蓋處理器關於是否接受PATH_INFO的默認設置。這種覆蓋是很必要的。比如說,當您使用了類似INCLUDES這樣的過濾器來根據PATH_INFO產生內容時。核心處理器通常會拒絕這樣的請求,而您就可以用下述的配置使這樣的腳本成爲可能:
<Files "mypaths.shtml">
Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo on
</Files>
AccessFileName 指令
說明: | 發佈配置文件名 |
---|---|
語法: | AccessFileName 文件名 [文件名] ... |
默認值: | AccessFileName .htaccess |
上下文: | 服務器配置, 虛擬主機 |
狀態: | 核心 |
模塊: | core |
當向客戶端返回文檔時,如果設置了此目錄的發佈配置文件功能。服務器將在這個文檔的各個路徑中從名字列表中查找第一個存在的配置文件。比如說:
AccessFileName .acl
在返回文檔/usr/local/web/index.html
之前,服務器會爲此指令讀取/.acl
,/usr/.acl
,/usr/local/.acl
和/usr/local/web/.acl
除非此功能以爲如下代碼所禁用
<Directory />
AllowOverride None
</Directory>
參見
AddDefaultCharset 指令
說明: | 在沒有進行指定字符集的情況下向迴應中加入的默認字符集 |
---|---|
語法: | AddDefaultCharset On|Off|字符集 |
默認值: | AddDefaultCharset Off |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
當迴應信息中沒有在HTTP頭中沒有包含任何關於內容類型的參數時,此指令將會指定一個字符集的名字並添加進去。這將覆蓋在文檔體中通過META
標籤指定的字符集。AddDefaultCharset Off
這樣的設置將會禁用此功能。AddDefaultCharset On
將根據此指令的需要啓用Apache內部的默認字符集——iso-8859-1
。您也可以指定使用另外一個字符集。 比如說:
AddDefaultCharset utf-8
AddOutputFilterByType 指令
說明: | 對特定的MIME類型指定輸出過濾器 |
---|---|
語法: | AddOutputFilterByType 過濾器[;過濾器...] MIME類型 [MIME類型] ... |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
兼容性: | 存在於Apache 2.0.33及後繼版本 |
此指令根據迴應的MIME類型對請求激活了特定的輸出過濾器。
下例使用了由mod_deflate
提供的DEFLATE
過濾器。它將把所有以text/html
或text/plain
爲標記的輸出(不論靜態或動態)在發送到客戶端之前進行壓縮。
AddOutputFilterByType DEFLATE text/html text/plain
如果您希望用不只一個過濾器來對內容進行處理,您可以用分號來分隔它們的名字。並對每個過濾器使用AddOutputFilterByType
指令。
下述配置將使所有標記爲text/html
的腳本輸出首先被INCLUDES
過濾器處理然後被DEFLATE
過濾器處理。
<Location /cgi-bin/>
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html
</Location>
Note
在某些情況下,用AddOutputFilterByType
來使用過濾器會遭受部分或完全的失敗。比如說,如果MIME類型不能確定,那麼將不會有過濾器加於其上,從而使之回落到DefaultType
的設置。甚至當DefaultType
與其相同的時候也是這樣。
然而,如果您想確認對某些資源相關的內容類型使用了過濾器,您可以使用用諸如AddType
或ForceType
這樣的辦法。在一個(non-nph)CGI腳本中設定內容類型也很妥當。
由類型決定的輸出過濾器永遠不會施用於來自代理的請求。
參見
AllowOverride 指令
說明: | 允許存在於.htaccess文件中的指令類型 |
---|---|
語法: | AllowOverride All|None|指令類型 [指令類型] ... |
默認值: | AllowOverride All |
上下文: | 目錄 |
狀態: | 核心 |
模塊: | core |
當服務器發現了一個.htaccess文件(由AccessFileName
指定)時,它需要知道在這個文件中聲明的哪些指令能覆蓋在此之前指定的訪問信息。
如果此指令設置爲None
,那麼.htaccess文件將被完全忽略。在這種情況下,服務器甚至都不會試着從文件系統讀取.htaccess文件。
當此指令設置爲All
時,所有具有.htaccess 上下文的指令都允許出現在.htaccess文件中。
directive-type可以是下列各組指令之一:
- AuthConfig
- 允許使用鑑權指令(
AuthDBMGroupFile
,AuthDBMUserFile
,AuthGroupFile
,AuthName
,AuthType
,AuthUserFile
,Require
等)。 - FileInfo
- 允許使用控制文檔類型指令(
DefaultType
,ErrorDocument
,ForceType
,LanguagePriority
,SetHandler
,SetInputFilter
,SetOutputFilter
,和mod_mime
中的Add*和Remove*指令等)。 - Indexes
- 允許使用目錄索引指令(
AddDescription
,AddIcon
,AddIconByEncoding
,AddIconByType
,DefaultIcon
,DirectoryIndex
,FancyIndexing
,HeaderName
,IndexIgnore
,IndexOptions
,ReadmeName
等)。 - Limit
- 允許使用主機訪問控制指令(
Allow
,Deny
和Order
)。 - Options
- 允許使用控制指定目錄功能指令(
Options
和XBitHack
)。
例如:
AllowOverride AuthConfig Indexes
參見
AuthName 指令
說明: | 用於HTTP認證的的驗證域 |
---|---|
語法: | AuthName auth-domain |
上下文: | 目錄, .htaccess |
覆蓋項: | AuthConfig |
狀態: | 核心 |
模塊: | core |
此指令爲目錄的驗證域設置了名字。此域將發送給客戶端以使用戶瞭解應當發送哪個用戶名和密碼。AuthName
指令帶有一個參數。如果域的名字中包含空格,它必須用引號引起來。它必須與AuthType
和Require
指令以及諸如AuthUserFile
和AuthGroupFile
這樣的指令一起工作。
舉例如下:
AuthName "Top Secret"
提供給AuthName
的字符串將出現在大多數瀏覽器提供的密碼對話框中。
參見
AuthType 指令
說明: | 用戶驗證的類型 |
---|---|
語法: | AuthType Basic|Digest |
上下文: | 目錄, .htaccess |
覆蓋項: | AuthConfig |
狀態: | 核心 |
模塊: | core |
此指令選擇了一個目錄的用戶驗證的類型。目前只實現了Basic
和Digest
。 它必須和AuthName
和Require
指令以及諸如AuthUserFile
和AuthGroupFile
這樣的指令一起使用。
參見
CGIMapExtension 指令
說明: | 定位CGI腳本解釋器的技術 |
---|---|
語法: | CGIMapExtension cgi-path .extension |
默認值: | None |
上下文: | 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
兼容性: | 僅適用於NetWare |
此指令用於控制Apache發現CGI腳本的解釋器。比如說CGIMapExtension sys:\foo.nlm .foo
這樣的設置將把所有具有.foo擴展名的CGI腳本文件傳遞給FOO解釋器。
ContentDigest 指令
說明: | 啓用HTTP迴應頭的Content-MD5的產生 |
---|---|
語法: | ContentDigest on|off |
默認值: | ContentDigest off |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | Options |
狀態: | 核心 |
模塊: | core |
此指令遵照RFC1854和RFC2068協議定義啓用了Content-MD5
的生成。
MD5是一種爲不定長度(arbitrary-length)的數據計算出一個“消息摘要”(有時也稱爲“指紋”)的算法。並且保證數據中的任何變化都會反應在message digest的變化當中。
Content-MD5
頭提供了一種端到端的針對整個消息體的完整性檢測方法。代理或者客戶端會檢查此頭以偵測在傳輸過程中,消息體是否產生了意外的改變。一個頭的例子如下:
Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
請注意,因爲對於每個請求(沒有對其值進行緩存)都要進行消息摘要的運算所以這會對您的服務器造成性能方面的問題。
Content-MD5
僅爲由核心伺服的文檔進行發送,而對於模塊將不予理會。比如說SSI文檔,CGI腳本的輸出和字節範圍的迴應都不包括這個頭。
DefaultType 指令
說明: | 在服務器無法由其他方法確定類型時,發送的默認MIME內容類型。 |
---|---|
語法: | DefaultType MIME類型 |
默認值: | DefaultType text/plain |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
有時會發生這樣的事:服務器會被要求提供一個文檔,而這個文檔的類型無法由它的MIME類型映射所決定。
服務器必須通知客戶端其文檔的內容類型。所以當一個未知類型出現時,將會使用DefaultType
。比如說:
DefaultType image/gif
這樣的配置對於裏面有很多gif圖片而有些在文件名中缺少.gif擴展名的目錄非常合適。
注意:與ForceType
指令的不同之處在於:此指令僅提供了默認的mime類型。所有其它mime類型的定義,包括文件的擴展名,或那些可以標識一種媒體類型的都會覆蓋此默認值。
<Directory> 指令
說明: | 封裝一組指令,使之僅對具有某個名字的文件系統目錄及其子目錄起作用。 |
---|---|
語法: | <Directory 目錄路徑> ... </Directory> |
上下文: | 服務器配置, 虛擬主機 |
狀態: | 核心 |
模塊: | core |
<Directory>
和</Directory>
用於封裝一組指令,使之僅對某個目錄及其子目錄生效。任何在目錄上下文中可以使用的指令都允許在這種情況下使用。Directory-path可以爲一個目錄的完整路徑,抑或是包含了Unix外殼匹配語法的通配符字串。在通配符字串中,“?”匹配任何單個的字符,“*”匹配任何字符序列。您也可以使用“[]”來確定字符範圍。以上通配符都不能匹配“/”字符。所以<Directory /*/public_html>
將無法匹配/home/user/public_html
,但<Directory /home/*/public_html>
能夠正確匹配。比如說:
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>
在使用directory-path參數的時候要注意:它們必須與Apache用於訪問文件的文件系統路徑保持一致。賦予特定<Directory>的指令將無法對通過不同路徑指向的同一個目錄文件生效,比如說通過另外一個符號連接生成的路徑。
擴展的正則表達式也可以通過附加一個~
字符來使用。比如說:
<Directory ~ "^/www/.*/[0-9]{3}">
將匹配/www/下的所有由3個數字組成的目錄。
如果有多個(非正則表達式)directory配置段符合包含某文檔的目錄(或其父目錄),那麼指令將以最短目錄最先應用的規則進行應用。並雜以.htaccess文件中的指令。比如說在
<Directory />
AllowOverride None
</Directory>
<Directory /home/>
AllowOverride FileInfo
</Directory>
中,訪問文檔/home/web/dir/doc.html
的步驟如下:
- 應用指令
AllowOverride None
(禁用.htaccess
文件)。 - 應用指令
AllowOverride FileInfo
(針對目錄/home/web
)。 - 應用所有
/home/web/.htaccess
中的FileInfo指令
正則表達式將在所有普通配置段應用後才予以考慮。所有的正則表達式將根據它們出現在配置文件中的順序進行驗證。比如說,以下配置:
<Directory ~ abc$>
... directives here ...
</Directory>
正則表達式配置段將在所有普通的<Directory>和.htaccess
文件應用後才予以考慮。所以正則表達式將匹配/home/abc/public_html/abc
並予以應用。
請注意:Apache對<Directory />的默認訪問權限爲Allow from All
。這意味着Apache將伺服任何通過URL映射的文件。我們建議您將這個配置做如下屏蔽:
<Directory />
Order Deny,Allow
Deny from All
</Directory>
然後在您想要使之被訪問的目錄中覆蓋此配置。參閱安全提示頁獲取更多詳情。
一般來說,directory小節會出現在access.conf文件中,但它們也可能出現在任何配置文件中。<Directory>
指令不可被嵌套使用,也不能出現在<Limit>
或<LimitExcept>
小節中。
參見
- Directory、Location和Files配置段是如何工作的中包含了當接受一個請求時,這些不同的配置段是如何組合工作的相關解釋。
<DirectoryMatch> 指令
說明: | 封裝一些指令並施用於文件系統中符合一個正則表達式的目錄及其子目錄 |
---|---|
語法: | <DirectoryMatch regex> ... </Directory> |
上下文: | 服務器配置, 虛擬主機 |
狀態: | 核心 |
模塊: | core |
<DirectoryMatch>
和</DirectoryMatch>
用於封裝一組指令。與<Directory>
類似,此組指令將僅施用於指定名字的目錄及其子目錄。然而,它可以接受一個正則表達式作爲參數。比如說:
<DirectoryMatch "^/www/.*/[0-9]{3}">
將匹配/www/
下所有由3個數字組成的目錄。
參見
<Directory>
獲取如何在普通的<Directory>
中使用正則表達式的描述。- Directory、Location和Files配置段是如何工作的中包含了當接受一個請求時,這些不同的配置段是如何組合工作的相關解釋。
DocumentRoot 指令
說明: | 組成網絡上可以觀看的主文檔樹的目錄 |
---|---|
語法: | DocumentRoot 目錄路徑 |
默認值: | DocumentRoot /usr/local/apache/htdocs |
上下文: | 服務器配置, 虛擬主機 |
狀態: | 核心 |
模塊: | core |
此指令設置了httpd來伺服的目錄。在沒有使用類似Alias這樣的指令的情況下,服務器會將請求中的URL附加到document root後面以構成指向文檔的路徑。比如說:
DocumentRoot /usr/web
於是對於http://www.my.host.com/index.html
的訪問就會指向/usr/web/index.html
。
指定DocumentRoot
時不應包括最後的“/”。
參見
EnableMMAP 指令
說明: | 在分發中使用內存映射(memory-mapping)來讀取文件 |
---|---|
語法: | EnableMMAP on|off |
默認值: | EnableMMAP on |
上下文: | 服務器配置, 虛擬主機, 目錄, .htaccess |
覆蓋項: | FileInfo |
狀態: | 核心 |
模塊: | core |
此指令控制着httpd在分發中如果需要讀取一個文件的內容,它是否可以使用內存映射。當處理一個需要訪問在一個文件中的數據的請求時,比如說當分發一個使用mod_include
指令進行服務器端分析的文件時,如果操作系統支持,Apache將默認使用內存映射。
這種內存映射有時會帶來性能的提高,但在某些情況下,您可能會需要禁用內存映射以避免一些操作系統的問題:
- 在一些多處理器的系統上,內存映射會減低一些httpd的性能。
- 在一個加載了NFS的
DocumentRoot
上,當httpd已經將一個文件進行了內存映射的情況下,刪除或截斷了這個文件會造成httpd因爲堆棧溢出而崩潰。
在可能遇到這些問題的服務器配置過程中,您應當使用下面這樣的命令來禁用內存映射:
EnableMMAP off