Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165      166      167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 166. Модуль Apache mod_negotiation

Согласование содержимого или, точнее, выбор содержимого — это выбор документа, который наилучшим образом соответствует возможностям клиента, из одного из нескольких доступных документов. Есть две реализации этого.

  • Карта типов (файл с обработчиком type-map ), в которой явно перечислены файлы, содержащие варианты.
  • Поиск в нескольких представлениях (включенный Multiviews Options ), при котором сервер выполняет неявное сопоставление с шаблоном имени файла и выбирает один из результатов.

Карты типов

Карта типов имеет формат, аналогичный почтовым заголовкам RFC822. Он содержит описания документов, разделенные пустыми строками, причем строки, начинающиеся с символа решетки ('#'), рассматриваются как комментарии. Описание документа состоит из нескольких записей заголовка; записи могут быть продолжены на несколько строк, если строки продолжения начинаются с пробелов. Начальный пробел будет удален, а строки объединены. Запись заголовка состоит из имени ключевого слова, которое всегда заканчивается двоеточием, за которым следует значение. Допускаются пробелы между именем заголовка и значением, а также между токенами значения. Допустимые заголовки:

Content-Encoding:
Кодировка файла. Apache распознает только те кодировки, которые определены директивой AddEncoding . Обычно сюда входят кодировки x-compress для сжатых файлов и x-gzip для файлов, сжатых gzip. Префикс x- игнорируется при сравнении кодировок.
Content-Language:
Язык(и) варианта в качестве стандартного языкового тега Интернета (RFC 1766). Например en , , что означает английский язык. Если вариант содержит более одного языка, они разделяются запятой.
Content-Length:
Длина файла в байтах. Если этот заголовок отсутствует, используется фактическая длина файла.
Content-Type:
Тип носителя MIME документа с необязательными параметрами. Параметры отделяются от типа носителя и друг от друга точкой с запятой с синтаксисом name=value . Общие параметры включают в себя:
level
целое число, указывающее версию типа носителя. По text/html умолчанию это 2, иначе 0.
qs
число с плавающей запятой со значением в диапазоне от 0 [.000] до 1 [.000], указывающее относительное «качество» этого варианта по сравнению с другими доступными вариантами, независимо от возможностей клиента. Например, файл jpeg обычно имеет более высокое исходное качество, чем файл ascii, если он пытается представить фотографию. Однако, если представляемый ресурс представляет собой искусство в формате ascii, то файл в формате 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.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 .var 

Запрос document.html.var в этом каталоге приведет к выбору варианта, наиболее точно соответствующего языковому предпочтению, указанному в Accept-Language заголовке запроса пользователя.

Если Multiviews этот параметр включен и MultiviewsMatch для него задано значение «обработчики» или «любой», запрос document.html обнаружит document.html.var и продолжит согласование с явной картой типов.

Другие директивы конфигурации, например, Alias могут использоваться для сопоставления document.html с document.html.var .

Мультивиды

Поиск Multiview включен файлом 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 

Могут быть указаны обе опции Prefer и Fallback , поэтому либо первый совпадающий вариант из LanguagePriority будет обслуживаться, если допустимо более одного варианта, либо будет обслуживаться первый доступный документ, если ни один из вариантов не соответствует допустимому списку языков клиента.

Смотрите также

  • AddLanguage


Директива LanguagePriority

Описание:Приоритет языковых вариантов для случаев, когда клиент не выражает предпочтения
Синтаксис: LanguagePriority MIME-lang [MIME-lang] ...
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_negotiation

Устанавливает LanguagePriority приоритет языковых вариантов для случая, когда клиент не выражает предпочтения при обработке запроса Multiviews. Список языков MIME расположен в порядке убывания предпочтения.

 LanguagePriority en fr de 

Для запроса foo.html , где foo.html.fr и foo.html.de оба существовали, но браузер не указал языковые предпочтения, foo.html.fr будет возвращено.

Обратите внимание, что эта директива действует только в том случае, если «лучший» язык не может быть определен каким-либо другим способом или директива ForceLanguagePriority не является None . Как правило, предпочтение языка определяет клиент, а не сервер.

Смотрите также

  • AddLanguage


 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165      166      167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru