<-
Apache HTTP 服务器 2.4 > Apache模块mod_negotiation

Apache模块mod_negotiation

描述:提供内容协商
状态:基础
模块标识符:谈判模块
源文件:mod_negotiation.c

摘要

内容协商,或更准确地说是内容选择,是从多个可用文档之一中选择与客户端功能最匹配的文档。有两种实现。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

类型图

类型映射的格式类似于RFC822邮件头。它包含用空行分隔的文档描述,其中以井号('#')开头的行被视为注释。文档描述由几个标题记录组成;如果连续行以空格开头,则记录可以在多行上继续。前导空格将被删除,行将被连接。标头记录由关键字名组成,关键字名总是以冒号结尾,后跟一个值。标头名称和值之间以及值的标记之间允许使用空格。允许的标题为:

Content-Encoding:
文件的编码。Apache仅识别AddEncoding指令定义的编码。这通常包括x-compress compress'd文件和x-gzipgzip'd文件的编码。x-对于编码比较,将忽略该前缀。
Content-Language:
变体的一种或多种语言,作为Internet标准语言标签(RFC 1766)。一个示例是en,表示英语。如果变体包含多种语言,则它们之间用逗号分隔。
Content-Length:
文件的长度,以字节为单位。如果此标头不存在,则使用文件的实际长度。
Content-Type:
文档 的MIME媒体类型,带有可选参数。参数与媒体类型分隔,并以分号分隔,语法为name=value。常用参数包括:
level
一个整数,指定媒体类型的版本。对于text/html此默认值为2,否则为0。
qs
一个浮点数,其值在0 [.000]到1 [.000]的范围内,指示此变体与其他可用变体相比的相对“质量”,而与客户端的功能无关。例如,如果jpeg文件试图代表照片,则其源质量通常高于ASCII文件。但是,如果要表示的资源是ascii art,则ascii文件将比jpeg文件具有更高的源质量。qs因此,所有值都是特定于给定资源的。

Content-Type: image/jpeg; qs=0.8

URI:
包含变体的文件uri(具有给定媒体类型,以给定内容编码进行编码)。这些被解释为相对于地图文件的URL。它们必须位于同一服务器上,并且必须引用如果直接请求客户端将被授予访问权限的文件。
Body:
资源的实际内容可以使用Body标头包含在类型映射文件中。此标头必须包含一个字符串,该字符串指定正文内容的分隔符。然后,在找到分隔符字符串之前,类型映射文件中的所有后续行都将被视为资源主体的一部分。

例:

Body:----xyz----
<html>
<body>
<p>Content of the page.</p>
</body>
</html>
----xyz----

例如,考虑一个名为的资源,该资源 document.html具有英语,法语和德语。对于这些文件被称为 document.html.endocument.html.frdocument.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设置为“ handlers”或“ any”,则请求 document.html将发现document.html.var并继续与显式类型映射进行协商。

其他配置指令(例如Alias可用于映射document.html到) document.html.var

最佳

多视图

通过启用了多视图搜索Multiviews Options。如果服务器收到一个请求/some/dir/foo,并 /some/dir/foo确实存在,则服务器会寻找一个名为所有文件的目录 foo.*,并有效假货了这名所有这些文件类型映射,赋予它们不同的介质类型和内容编码那就得客户是否要求提供姓名之一。然后,它选择最符合客户要求的匹配项,并返回该文档。

MultiviewsMatch 指令配置Apache在选择文件时是否考虑未分配内容协商元信息的文件。

最佳

CacheNegotiatedDocs 指令

描述:允许内容协商文档由代理服务器缓存
句法:CacheNegotiatedDocs On|Off
默认:CacheNegotiatedDocs Off
内容:服务器配置,虚拟主机
状态:基础
模块:mod_negotiation

如果设置,此指令允许代理服务器缓存内容协商的文档。这可能意味着这些代理后面的客户可以检索与其功能最不匹配的文档版本,但这将使缓存效率更高。

该指令仅适用于来自HTTP / 1.0浏览器的请求。HTTP / 1.1对协商的文档的缓存提供了更好的控制,并且此指令对HTTP / 1.1请求的响应无效。

最佳

ForceLanguagePriority 指令

描述:如果找不到单个可接受的文档,应采取的措施
句法:ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]
默认:ForceLanguagePriority Prefer
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_negotiation

ForceLanguagePriority指令使用给定LanguagePriority来满足协商,否则服务器将无法返回单个匹配的文档。

ForceLanguagePriority Prefer使用 LanguagePriority服务于一个有效的结果,而不是返回一个HTTP结果300(多重选择)时,有几个同样有效的选择。如果给出了以下指令,并且Accept-Language分配了用户的标头,en并且de每个标头 都具有质量.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如果可以接受一个以上的变体,则将提供第一个匹配的变体;如果没有一个变体与客户可接受的语言列表相匹配,则将提供第一个可用的文档。

也可以看看

最佳

语言 优先权指令

描述:客户不表达偏好的情况下语言变体的优先顺序
句法:LanguagePriority MIME-lang [MIME-lang] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_negotiation

LanguagePriority用于何处处理一个在Multiviews请求时,客户端没有偏好的情况下语言变体的优先级设置。MIME-lang的列表按优先级递减的顺序排列。

LanguagePriority en fr de

对于foo.htmlfoo.html.frfoo.html.de都存在的请求,但浏览器未表达语言偏好,则将foo.html.fr返回。

请注意,该指令仅在无法通过任何其他方式确定“最佳”语言或者该ForceLanguagePriority指令不是时才有效None。通常,客户端确定语言首选项,而不是服务器。

也可以看看

可用语言: zh  |  fr  |  ja 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。