Содержание:
This product includes software developed by the Apache Group
for use in the Apache HTTP server project (http://www.apache.org/).
See Apache HTTP server LICENSE
Copyright (C) 1995,1996 Dm.Kryukov, Stack Ltd.
Changes (C) 1997 Alex Tutubalin, Samovar Internet Consulting, LLC.
Краткий обзор сервера
На сегодняшний день в русскоязычном (как минимум)
Internet-пространстве существует "проблема многих кодировок".
Существует по меньшей мере пять распространенных кодировок (кодовых таблиц)
кириллицы и "информационные ресурсы" должны доставляться потребителям
в доступной для них форме т.е. в той кодировке, которую поддерживает программное
обеспечение пользователя.
Как следствие, на русскоязычном WWW-сервере должна быть (или крайне желательна)
поддержка нескольких кодировок кириллицы (вопросы о единственно верной кодировке
и о правильной стороне с которой нужно разбивать яйцо являются религиозными
и не являются темой данного сервера).
Желательно было сделать такую поддержку максимально прозрачной для пользователя
и гибкой в настройке для Web-мастера.
Вариантов решения этой задачи существует уже довольно много и предлагаемые
способ и программное обеспечение - не уникальны, хотя и завоевали некоторую
популярность.
За основу данного программного продукта был
взят популярный HTTP-сервер Apache,
к которому была добавлена функциональность, необходимая для корректной
поддержки нескольких кодировок кириллицы одновременно. К сожалению, эта
функциональность не может быть обеспечена полностью независимым модулем,
пришлось внести некоторые добавления в основной код Apache.
Последняя веpсия "Russian Apache" - Apache 1.2.1 rus/PL20.0.
Последняя версия, основанная на Apache 1.1.x - Apache 1.1.3 rus/PL16,
но версия на основе Apache 1.1.3 более не развивается и не поддерживается.
Перед установкой сервера рекомендуем тщательно изучить разделы
Как это работает,
Как настроить
и Некоторые рекомендации.
Если вы используете "старую" версию Russian Apache, то рекомендуется
сделать апгрейд как минимум на версию 1.1.3 rus/PL16
- в версиях PL14..PL16 было исправлено много нефатальных, но неприятных ошибок (см.
список изменений и исправлений).
Версии, сделанные на основе Apache 1.2.1 (текущая - PL20.0) также достаточно
стабильны, но между версиями PL16 и PL18 полностью поменялись директивы
конфигурации и переконфигурация потребует некоторых усилий.
Особенностями сервера являются:
- Поддержка согласования кодировок клиента и сервера как при выдаче документов
пользователю, так и при обработке пользовательского ввода (при вводе поддерживаются
как GET, так и POST).
- Выдача правильных Content-type:...;charset=... в соответствии с
этим согласованием.
- Выдача при необходимости заголовка Expires: для proxy серверов.
- Поддержка Ranges.
- Поддержка возможности не записывать в logfile ненужные адреса.
Версии сервера до PL16 включительно не поддерживают явным образом
хранение документов на диске в нескольких кодировках (это может быть нужно
в случае, когда разные разделы сервера редактируют разные люди, работающие на
разных платформах). Соответствующая функциональность, позволяющая использовать
разные "внутренние" (on-disk) кодировки для разных директорий появилась
начиная с версии PL17b, однако на настоящий момент эти версии находятся в
стадии бета-тестирования.
В сервере реализовано совмещение нескольких методов согласования
кодировок клиента и сервера (подробности - в разделе
Как это работает, а именно:
- Через заголовки клиента Accept-Charset: и/или
Accept: text/x-cyrillic ...
Если сервер знает о том charset, который запросил клиент, то эти
заголовки имеют высший приоритет для сервера, вне зависимости от его
настройки на native charset.
- Через поиск в имени сервера названия одной из сконфигурировнных
кодовых страниц (например: www-koi8-r.stack.serpukhov.su или
www-windows-1251.stack.serpukhov.su)
- Через поиск в префиксе запрошенного URI названия одной из
сконфигурировнных кодовых страниц (например:
http://www.stack.net/windows-1251/file.html)
- Через конфигурацию кодовых страниц по умолчанию для различных
типов клиентских программ в случае, когда сервер может опознать
клиентскую программу (иногда среду, в которой работает клиентская
программа).
- Для разных (виртуальных) серверов и/или директорий - по отдельности.
Т.е. для каждой директории или виртуального сервера (на другом hostname или
номере порта) можно указать свой набор директив
которые будут работато от этого узла дерева и "ниже" (пока
их не отменят директивы на большем уровне детальности).
- В случае принятия сообществом единой транспортной кодировки,
необходимо будет оставить только ее в сервере, независимо от физического
способа представления данных документов.
Некоторые особенности:
- Администратор
сервера сам определяет - в каких случаях должны использоваться
разные кодовые страницы. Администратор сервера, также, может
самостоятельно создавать таблицы перекодировки и подключать
их к серверу для согласования кодовой страницы сервера
с требуемой кодировкой клиента.
Сервер корректно преобразует
текстовые потоки от/к клиенту, включая последовательности
типа %xx%yy%zz. В текущей версии полностью перекодируется также
и Netscape file-upload, равно как и PUT. Эта проблема будет
решена в последующих версиях.
- Администратор сервера может указывать характерные признаки
клиентской программы (User-agent: заголовок) и соответствующий
данной клиентской программе charset по-умолчанию.
- Администратор сервера может указать клиентские программы,
которые неадекватно воспринимают MIME, для них такие заголовки
сервером не будут выдаваться.
- Администратор сервера может указать приоритет в выборе
сервером charset между URL и User-agent.
- Администратор сервера может определить реакцию сервера
на некорректно запрошенный charset (т.е. выдавать ли
запрошенный документ в таком случае в charset по-умолчанию)
- Использование в URL фрагмента файла. Данная возможность
позволяет серверу переслать клиенту не весь требуемый документ
а только необходимую его часть (например, ссылки на результат
поиска WAIS в больших структурированных файлах).
Сервер воспринимает в запросе конструкцию:
- file_name;bytes=l-m или
- file_name;lines=l-m
Сервер также воспринимает от клиента заголовок:
- Range: bytes=a-b
- Range: lines=a-b
При этом, документу ставится Content-type: text/plain если документ был текстом
или Content-type: application/octet - если документ является
не текстовым.
- Возможность исключать в конфигурационных файлах нежелательные
адреса для записи в logfile для каждого реального и виртуального
сервера с помощью директивы NoLog domain или NoLog aaa.bbb.ccc
[Next Page]