• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_negotiation

    描述:提供内容谈判
    状态:Base
    模块标识符:negotiation_module
    源文件:mod_negotiation.c

    摘要

    内容协商,或者更准确地说是内容选择,是从几个可用文档中选择一个与 clients 功能最匹配的文档。这有两个_Implempleations。

    • 类型 map(具有处理程序type-map的文件),它明确 lists 包含变体的 files。
    • 多视图搜索(由Multiviews选项启用),其中服务器执行隐式文件名 pattern match,并从结果中进行选择。

    键入 maps

    类型 map 的格式类似于 RFC822 mail headers。它包含由空 lines 分隔的文档描述,lines 以哈希字符('#')开头,被视为 comments。文档描述由几个标题记录组成;如果延续 lines 以空格开头,则可以在多个 lines 上继续记录。将删除前导空格并连接 lines。标题 record 由关键字 name 组成,它始终以冒号结尾,后跟 value。标题 name 和 value 之间以及 value 的标记之间允许有空格。允许的 headers 是:

    • Content-Encoding:
      文件的编码。 Apache 仅识别由 AddEncoding 指令定义的编码。这通常包括压缩 files 的编码 x-compress 和 gzip'd files 的 x-gzip。对于编码比较,忽略 x-前缀。
    • Content-Language:
      变体的 language(s),作为 Internet 标准语言标记(RFC 1766)。 example 是 en,意思是英语。如果变体包含多种语言,则用逗号分隔。
    • Content-Length:
      文件的长度,以字节为单位。如果此标头不存在,则使用文件的实际长度。
    • Content-Type:
      文档的 MIME 媒体类型,带有可选参数。参数通过 semi-colon 与媒体类型分离,语法为 name=value。 Common 参数包括:level integer 指定媒体类型的 version。对于 text/html,默认为 2,否则为 0. qs a floating-point 数字,其中 value 的范围为 0[21]到 1[22],表示此变体的相对“质量”与其他可用变体相比,与 client 无关能力。例如,如果 jpeg 文件试图表示照片,则它通常具有比 ascii 文件更高的源质量。但是,如果所表示的资源是 ascii art,那么 ascii 文件的源质量将高于 jpeg 文件。因此,所有 qs 值都特定于给定资源。 Example Content-Type:image/jpeg; qs=0.8
    • URI:
      uri 包含变体的文件(给定媒体类型,使用给定的内容编码编码)。这些被解释为相对于 map 文件的 URL;它们必须位于同一服务器上,并且如果要直接请求 client,则必须引用_clile 才能访问 files。
    • Body:
      资源的实际内容可以使用 Body 标头包含在 type-map 文件中。此标头必须包含 string,用于指定正文内容的分隔符。然后,类型 map 文件中的所有后续 lines 将被视为资源主体的一部分,直到找到分隔符 string。例如:Body:----xyz ----<html><body><p>页面内容。</p></body></html>----xyz ----

    例如,考虑一个名为document.html的资源,该资源有英语,法语和德语版本。其中每个的 files 分别称为document.html.endocument.html.frdocument.html.de。类型 map 文件将被称为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

    所有这四个 files 应放在同一目录中,.var文件应与type-map处理程序与AddHandler指令相关联:

    AddHandler type-map .var
    

    在此目录中对document.html.var的请求将导致选择与用户的Accept-Language请求标头中指定的语言首选项最匹配的变体。

    如果启用Multiviews,并且MultiviewsMatch设置为“处理程序”或“任何”,则对document.html的请求将发现document.html.var并且继续与显式类型 map 协商。

    其他 configuration 指令(例如别号)可用于 map document.htmldocument.html.var

    多视图

    Multiviews选项启用了多视图搜索。如果服务器收到/some/dir/foo的请求并且/some/dir/foo不存在,那么服务器会读取目录,查找名为foo.*的所有 files,并有效地伪造一个类型 map,它命名所有这些 files,为它们分配相同的媒体类型,并且 content-encodings 它会如果 client 通过 name 请求其中一个。然后,它会根据 client 的要求选择最佳的 match,然后返回该文档。

    MultiviewsMatch指令配置 Apache 是否会在选择 files 时考虑没有为其分配内容__got的 files。

    CacheNegotiatedDocs 指令

    描述:允许代理服务器缓存 content-negotiated 文档
    句法:CacheNegotiatedDocs On\|Off
    默认:CacheNegotiatedDocs Off
    Context:server config,virtual host
    状态:Base
    模块:mod_negotiation

    如果设置,则此指令允许代理服务器缓存 content-negotiated 文档。这可能意味着这些代理背后的客户端可以检索不是最佳 match 的文档版本,但它会使缓存更有效。

    该指令仅适用于来自 HTTP/1.0 浏览器的请求。 HTTP/1.1 可以更好地控制协商文档的缓存,该指令对 HTTP/1.1 请求的响应没有影响。

    ForceLanguagePriority 指令

    描述:如果找不到单个可接受的文档,则采取的措施
    句法:ForceLanguagePriority None\|Prefer\|Fallback[Prefer\|Fallback]
    默认:ForceLanguagePriority Prefer
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_negotiation

    ForceLanguagePriority指令使用给定的LanguagePriority来满足 negotiation,否则服务器不会_retret 返回单个匹配的文档。

    ForceLanguagePriority Prefer使用LanguagePriority来提供一个有效结果,而不是在有几个同样有效的选择时返回 HTTP 结果 300(MULTIPLE CHOICES)。如果给出了下面的指令,并且用户的Accept-Language标题分配ende作为质量.500(同样可接受),则将提供第一个匹配变体en

    LanguagePriority en fr de
    ForceLanguagePriority Prefer
    

    ForceLanguagePriority Fallback使用LanguagePriority来提供有效结果,而不是返回 HTTP 结果 406(NOT ACCEPTABLE)。如果给出了以下指令,并且用户的Accept-Language仅允许es语言响应,但未找到此类变体,则将提供下面LanguagePriority列表中的第一个变体。

    LanguagePriority en fr de
    ForceLanguagePriority Fallback
    

    可以指定选项PreferFallback,因此如果可以接受多个变体,则将提供来自LanguagePriority的第一个匹配变体,或者如果 none 变体与 client 可接受的语言列表匹配,则将提供第一个可用文档。

    参见

    • AddLanguage

    LanguagePriority 指令

    描述:对于 client 不表示首选项的情况,语言变体的优先级
    句法:LanguagePriority MIME-lang[MIME-lang]...
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_negotiation

    在处理 Multiviews 请求时,LanguagePriority设置了 client 不表示首选项的语言变体的优先级。 MIME-lang 的列表在优先级递减的顺序中。

    LanguagePriority en fr de
    

    对于foo.html的请求,其中foo.html.frfoo.html.de都存在,但浏览器没有表达语言首选项,则返回foo.html.fr

    请注意,如果无法通过任何其他方式确定“最佳”语言或ForceLanguagePriority指令不是None,则此指令仅起作用。通常,client 确定语言首选项,而不是服务器。

    参见

    • AddLanguage

    上篇:mod_mime_magic

    下篇:mod_nw_ssl