Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Как настроить? (Версии PL12-PL17)
Все вышеперечисленные возможности сервера настраиваются через конфигурационные файлы. Ниже приведено описание используемых для этого директив.

Начиная с версии PL18 (которая сейчас проходит бета-тестирование), директивы конфигурационных файлах (и общая идея) сильно изменились. Поэтому описание синтаксиса директив для версий PL18 и старше вынесено в отдельный документ.

Директивы, используемые для конфигурации
CharsetTable
Служит для описания основных charsets, используемых в сервере. Синтаксис:
Oficial_Name
Официальное название charset (например windows-1251, koi8-r, ibm866, iso_8859-5:1988 и.т.д.)
Table1
Имя файла таблицы, устанавливающей соответствие между внутренним представлением документов и документов в данном charset при передаче к клиенту.
Table2
Имя файла таблицы, устанавливающей соответствие между внутренним представлением документов и документов в данном charset при приеме от клиента. Может отсутствовать, в этом случае используется таблица, обратная Table1.
Language
Название языка, к которому принадлежит данный charset. Это название должно быть определено в conf/srm.conf в директивах AddLanguage и LanguagePriority.
Примеры
CharsetTable iso_8859-5:1988 conf/koi-iso.tab ru
CharsetTable ibm866 conf/koi-alt.tab ru
CharsetTable windows-1251 conf/koi-win.tab ru
CharsetTable koi8-r conf/koi-koi.tab ru
      
Каждая директива описывает только один charset. Если существует несколько виртуальных серверов и в каждом из этих серверов есть необходимость использовать несколько charsets, то они должны быть описаны для каждого виртуального сервера в секции <VirtualHost>.

CharsetAlias
Служит для описания имен псевдонимов указанных charset. Синтаксис:
Oficial_Name
Официальное имя описываемого charset. Должно быть определено до данной директивы директивой CharsetTable.
Alias1 Alias2 ...
Имена псевдонимов для данного charset.
Примеры:
CharsetAlias iso_8859-5:1988 iso-ir-144 iso_8859-5 cyrillic iso-8859-5
CharsetAlias iso_8859-5:1988 iso8859-5 iso-8859.5 iso8859.5 iso
CharsetAlias ibm866 csibm866 866 cp866 x-cp866 x-ibm866 cp-866 alt
CharsetAlias windows-1251 win x-cp1251 cp1251 cp-1251
      
Все псевдонимы должны быть определены индивидуально для каждого виртуального сервера.

CharsetPriority
Служит для определения приоритетов сконфигурированных charsets. Может иметь значение если в запросе клиента указаны равные весовые коэффициенты для различных charsets или если не указан NativeCharset то будет использован старший. Синтаксис:
Charset1 Charset2 ..
Имена charset в порядке убывания приоритета (самый левый имеет высший приоритет). Все имена Charset должны быть определены до этой директивы с помощью CharsetTable.
Пример:
CharsetPriority windows-1251 koi8-r ibm866
В именах charset должны использоваться только официальные имена, а не псевдонимы.

NativeCharset
Определяет имя chatset по-умолчанию для данного сервера. Синтаксис:
Charset_Name
Официальное имя charset по-умолчанию для данного сервера.
Пример:
NativeCharset koi8-r
NativeCharset windows-1251
      
Определяется для каждого виртуального сервера независимо. Charset_Name должно быть определено до этой директивы с помощью директивы CharsetTable.

Внимание! Почему-то многие ошибочно считают, что директива NativeCharset описывает кодировку, в которой сервер хранит документы на диске. Это не так. NativeCharset описывает (всего-лишь) кодировку, в которой документ будет показан клиенту в том случае, когда все другие способы определения кодировки клиента (заголовок Accept:, URI Prefix, User-Agent) не сработают. Для того, чтобы поменять "кодировку на диске" необходимо переопределить описания Charset. Это можно сделать для сервера в целом или для отдельного виртуального сервера.

AgentCharset
Определяет charset, который может быть использован при нахождении в запросе клиента подстроки, идентифицирующей данного клиента. Эта подстрока ищется в запросе клиента в поле User-Agent. Синтаксис:
Charset_Name
Официальное имя charset
Pattern1 Pattern2 ...
Шаблоны для поиска в запросе клиента в поле User-Agent.
Примеры:
AgentCharset windows-1251 AIR_Mosaic IWENG/1 MSIE WinMosaic (Windows (WinNT;
AgentCharset windows-1251 (Win16; (Win95; (16-bit)
AgentCharset koi8-r Arena Ariadna Macintosh OmniWeb Sextant PRD (X11
AgentCharset ibm866 DosLynx
      
Все Pattern являются подстроками, а не regexp выражениями.

BadAgent
Некоторые клиентские программы не могут адекватно реагировать на MIME, например при получении заголовка
Content-type: text/html; charset=koi8-r; level=3
    
Чтобы сервер не выдавал таким клиентским программам charset=... служит эта директива. Синтаксис:
Pattern1 Pattern2 ...
Подстрока в поле User-agent запроса клиента, при нахождении которой сервер будет воздерживаться от выдачи charset=...
Пример:
BadAgent lynx/2.1 arena
Все Pattern являются подстроками, а не regexp выражениями.

Как справедливо заметил Andrey Chernov, указывать в этой директиве только название броузера, не указывая конкретной версии - значит нарываться на неприятности в будущем. К сожалению, до версии PL14 включительно, вместе с Apache-RUS распространялся "дистрибутивный" конфигурационный файл, в котором было сделано именно так (в BadAgent указаны lynx и MSIE). Начиная с версии PL15 это упущение исправлено. Правильная (на день написания этого текста - 21 апреля 1997 года) строка выглядит так:

BadAgent arena Lynx/2.0 Lynx/2.1 Lynx/2.2 Lynx/2.3 Lynx/2.4 "MSIE 2.0;"
    

NoSoBad
Исключения из списка BadAgent. Эта директива была введена в связи с тем, что новые версии Lynx требуют указания charset=, в то время как старые версии при указании charset= ведут себя неадекватно. Т.к. "старых" версий очень много, то проще описать "новые" как исключения. Синтаксис:
NotSoBad pattern1 pattern2
    
Все Pattern являются подстроками, а не regexp выражениями. Обычное использование - для отделения конкретных версий программы от всех разновидностей программы:
BadAgent lynx 
NotSoBad Lynx/2.7 Lynx/2.6 Lynx/2.5FM
    
Все версии lynx, кроме 2.5FM, 2.6 и 2.7 будут считаться "BadAgent".

RejectErrorCharset
Директива служит для определения сервером действий при получении в запросе клиента неизвестного charset. Синтаксис: При установке этого параметра в On сервер не будет выдавать документ в native charset, а будет сообщать клиенту об ошибке в запросе. При установке в Off - в любом случае выдаст документ как сможет. Значение по-умолчанию Off.

NoHostnameCharset
По умолчанию, если клиентом не запрошена конкретная code page сервер пытается ее определить по своему имени, например: win.www.company.com. Данная директива позволяет запретить серверу искать требуемый клиенту charset в своем имени. Синтаксис: Значение по-умолчанию Off.

NoUriCharset
Директива позволяет запретить серверу определять требуемый клиенту charset из URI. Конкретный пример, по умолчанию сервер считает что документы типа: следует выдавать в кодировке windows-1251. Использование директивы: заставит сервер выдать этот документ в native code page.

CharsetAgentPriority
Определяет приоритетность при поиске необходимого charset сервером между URL и User-Agent. Синтаксис: При установке этого параметра в On сервер в первую очередь будет смотреть на поле User-Agent. И если в этом поле он найдет известный ему шаблон, то примет решение о сконфигурированном charset согласно директивам AgentCharset. Если же шаблон не будет найден - сервер попытается найти имя charset в префиксе имени виртуального сервера, к которому обращен запрос и/или в префиксе затребованного URI.
При установке в Off (это значение по-умолчанию) - наоборот.







Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.