<-
Apache > HTTP Server > 文件 > 2.4 版 > 模組

Apache 模組 mod_negotiation

可用的語言:  en  |  fr  |  ja 

說明提供 內容協商
狀態基本
模組識別代號negotiation_module
原始檔mod_negotiation.c

摘要

內容協商,或更準確地說內容選取,在多個可用的文件之中,選取最符合客戶端功能的文件。有兩種執行方式。

Support Apache!

主題

指令

修正錯誤檢查清單

另請參閱

top

類型對應

類型對應的格式與 RFC822 電子郵件標頭類似。它包含文件說明(以空白行分隔),而且由井字號 ('#') 開頭的行被視為註解。文件說明包含多個標題記錄;記錄如果在連續行開頭加入空格,則可以跨多行。開頭空格將會刪除,而且各行將會合併。標題記錄包含一個關鍵字名稱,通常以冒號結尾,後面接著一個值。標題名稱和值之間、以及值的標記之間,容許有空白。容許的標頭包括:

Content-Encoding
檔案編碼。Apache 僅識別由 AddEncoding 指令定義的編碼。這通常包括 compress 壓縮檔的編碼 x-compress,以及 gzip 壓縮檔的編碼 x-gzip。編碼比對會忽略 x- 前綴。
Content-Language
變體的語言(網際網路標準語言標籤(RFC 1766)。例如:英文為「en」。如果變體包含多種語言,語言之間以逗號分隔。
Content-Length
檔案長度(以位元組為單位)。如果此標頭不存在,則使用檔案實際長度。
Content-Type
文件MIME 媒體類型,搭配可選參數。參數以分號與媒體類型,以及相互之間隔開。語法為「名稱=值」。常見參數包括:
Level
用於指定媒體類型版本的整數。對於「text/html」,預設為 2,否則為 0。
QS
介於 0[.000] 到 1[.000] 之間的浮點數,用於表示此變體與其他可用變體之間,相對於客戶端功能的品質。例如:如果 jpeg 檔案嘗試呈現相片,則來源品質通常會比純文字檔案高。但是,如果呈現的資源為純文字藝術,則純文字檔案的來源品質會比 jpeg 檔案高。因此,所有「qs」值都特定於某項資源。

範例

Content-Type: image/jpeg; qs=0.8

URI
包含變體(具備指定媒體類型,並使用指定內容編碼編碼)的檔案 uri。這些會被詮釋為相對於對應檔案的 URL;它們必須在同一個伺服器上,且必須參照客戶端在直接要求時可以取得存取權限的檔案。
Body
資源的實際內容可以使用 Body 標頭包含在類型對應檔案中。此標頭必須包含一個字串,用於指定 body 內容的分隔字串。然後,在類型對應檔案中,所有後面的行都會被視為資源 body 的一部分,直到找到分隔字串為止。

範例

Body:----xyz----
<html>
<body>
<p>頁面內容。</p>
</body>
</html>
----xyz----

例如,考量一個稱為「document.html」的資源,它有英文、法文和德文可供使用。這些檔案分別稱為「document.html.en」、「document.html.fr」和「document.html.de」。類型對應檔案將會稱為「document.html.var」,並會包含以下內容:

URI: document.html

Content-language: en
Content-type: text/html
URI: document.html.en

Content-language: fr
Content-type: text/html
URI: document.html.fr

Content-language: de
Content-type: text/html
URI: document.html.de

所有這四個檔案都應該放置在同一個目錄中,且「.var」檔案應該與「type-map」處理常式搭配,並搭配有一個「AddHandler」指令碼。

AddHandler type-map .var

在這個目錄中,針對 document.html.var 的請求將選擇與使用者的 Accept-Language 請求標頭中所指定語言喜好最相符的變體。

如果啟用了 Multiviews,且 MultiviewsMatch 設為「處理常式」或「任意」,針對 document.html 的請求將找出 document.html.var,並繼續與明確的類型對應進行協商。

其他組態指令,例如 Alias,可用於將 document.html 對應到 document.html.var

top

Multiviews

Multiviews Options 將啟用 Multiviews 搜尋。如果伺服器收到 /some/dir/foo/some/dir/foo 不存在,則伺服器將讀取目錄,尋找所有名為 foo.* 的檔案,並實際偽造一個類型對應,其中指定這些檔案,並指定與客戶端透過名稱要求時相同的媒體類型和內容編碼。接著選擇與客戶端需求最佳的相符項目,並傳回該文件。

MultiviewsMatch 指令組態 Apache 是否會考慮在選擇檔案時沒有指定內容協商資訊的檔案。

top

CacheNegotiatedDocs 指令

說明允許代理伺服器快取內容協商文件
語法CacheNegotiatedDocs 開啟|關閉
預設CacheNegotiatedDocs 關閉
內容伺服器設定、虛擬主機
狀態基本
模組mod_negotiation

如果設定,此指令將允許代理伺服器快取內容協商文件。這表示位於這些代理伺服器後方的客戶端可以擷取與其能力不完全相符的文件版本,但會讓快取更有效率。

此指令僅套用於來自 HTTP/1.0 瀏覽器的請求。HTTP/1.1 提供更佳的協商文件快取控管,而此指令對於 HTTP/1.1 請求的回應並不具任何效果。

top

ForceLanguagePriority 指令

說明如果找不到單一可接受文件時要執行的動作
語法ForceLanguagePriority 無|偏好|備用 [偏好|備用]
預設ForceLanguagePriority 偏好
內容伺服器設定、虛擬主機、目錄、.htaccess
覆寫FileInfo
狀態基本
模組mod_negotiation

ForceLanguagePriority 指令使用指定的 LanguagePriority 來滿足協商,其中伺服器無法傳回單一相符文件的情況。

ForceLanguagePriority Prefer 使用 LanguagePriority 提供一個有效的結果,而不是在有數個同樣有效的選擇時傳回 HTTP 結果 300(多重選擇)。如果指定了下列指令,且使用者的 Accept-Language 標頭將 ende 分別指定為品質 .500(同樣可接受),則會提供第一組相符變異(en)。

LanguagePriority en fr de
ForceLanguagePriority Prefer

ForceLanguagePriority Fallback 使用 LanguagePriority 提供一個有效的結果,而不是傳回 HTTP 結果 406(不可接受)。如果指定了下列指令,且使用者的 Accept-Language 僅容許 es 語言回應,但找不到此類變異,則會提供 LanguagePriority 清單中第一組變異。

LanguagePriority en fr de
ForceLanguagePriority Fallback

可以指定 PreferFallback 兩種選項,因此,如果多於一種變異是可以接受的,則會提供 LanguagePriority 中的第一組相符變異,或者,如果沒有任何變異與客戶端可接受的語言清單相符,則會提供第一份可用的文件。

另請參閱

top

LanguagePriority 指令

說明當客戶端未表達喜好時,語言變異的優先順序
語法LanguagePriority MIME-lang [MIME-lang] ...
內容伺服器設定、虛擬主機、目錄、.htaccess
覆寫FileInfo
狀態基本
模組mod_negotiation

LanguagePriority 設定語言變異的優先順序,用於在處理 Multiviews 要求時,客戶端未表達喜好時的情況。 MIME-lang 清單會依喜好遞減排序。

LanguagePriority en fr de

如果要求 foo.html,同時存在 `foo.html.fr` 和 `foo.html.de`,但瀏覽器未表達語言喜好,則會傳回 `foo.html.fr`。

請注意,此指令只有在無法透過其他方式判斷「最佳」語言時,或者 ForceLanguagePriority 指令不為 None 時才會生效。一般來說,語言喜好是由客戶端決定,而非伺服器。

另請參閱

可用的語言:  en  |  fr  |  ja 

top

註解

請注意
此處不是問答集。張貼於此處的留言應針對改善文件或伺服器的建議,如果留言已被執行或被認為無效/離題,可能會遭到我們的管理員移除。有關如何管理 Apache HTTP Server 的問題應轉至 Libera.chat 中的我們的 IRC 頻道 #httpd,或寄至我們的 郵寄清單