Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Водяхо 04 / lect_doc / АРАС.doc
Скачиваний:
48
Добавлен:
03.06.2014
Размер:
329.22 Кб
Скачать

Команды allow и deny

С помощью этих команд можно разрешать или запрещать доступ из конкретных IP-адресов. Порядок выполнения команд allow и deny определяется директивой order:

order allow, deny

Это значит, что доступ клиенту, который указан в команде allow, разрешен, если только этот клиент не упомянут в deny. Если ни в одной из этих команд клиент не указан, то доступ ему запрещается. Есть еще одна возможность:

order mutual-failure

Параметр mutual-failure означает, что если клиент указан в allow и не указан в deny, то доступ ему разрешается; в противном случае доступ запрещается. Можно задать команду:

allow from all

которая всем разрешает доступ. Можно также задать

allow from 123.156

deny from all

Эти команды запрещают доступ всем пользователям, кроме тех, IP-адреса которых начинаются с комбинации 123.156.

Можно также использовать доменные имена:

allow from abed. corn

Это команда разрешает доступ с узлов abcd.com, ef.abcd.com, но не с узла noabcd.com.

Команды deny from и allow from можно использовать для управления доступом со стороны пользовательских агентов, т.е. браузеров. Для этого используются команды типа:

deny from abcd.com user-agent Mozilla/2

Благих намерений, однако, недостаточно: перед тем, как хоть сколько-нибудь довериться набору правил доступа, эти правила желательно тщательно проверить.

Выбор языка

Apache способен изменять содержимое возвращаемого файла в соответствии с особенностями клиента. Чтобы продемонстрировать такую возможность, необходимо иметь html-документы на различных языках. Каждому файлу необходимо присвоить соответствующее расширение: .еп - английская версия . it - итальянская версия .ru - русская версия

Т.е. итальянская версия файла, например, будет называться index.html.it (можно index.it.html). Теперь достаточно указать в файле httpd.conf набор директив: AddLanguage it .it AddLanguage en .en AddLanguage ru .ni

Тогда на клиентской машине (например в Netscape) при выборе языка Italian из списка General Preferences меню Options будет выводиться итальянская версия документа.

Можно также установить приоритет языков на стороне сервера. Для этого используется директива LanguagePriority. Если в файле конфигурации определена директива: LanguagePriority ru it en

а в браузере приоритет языков отключен, то по умолчанию будет использоваться русский язык.

Поддержка русскоязычных кодировок,

Исторически сложилось, что в России распространены несколько русскоязычных кодировок, в основном ориентированных на разные платформы. Наиболее известные из них:

КОИ-8

8 - битовая кодировка по ГОСТ

Microsoft Code Page 866 ("Альтернативная")

кодировка, используемая в MS-DOS

ISO-8859-5

кодировка, утвержденная международной организацией по стандартизации

Microsoft Code Page 1251 ("Windows")

кодировка, используемая в Microsoft Windows.

Специалисты утверждают что всего в России имеют хождение II кодировок русского алфавита.

Если WWW сервер ориентирован на использование внутри организации или его пользователями будет являться ограниченный круг людей с однотипными рабочими местами, можно ограничиться одной кодировкой русскоязычной информации на сервере.

Сложности возникают, если необходимо расширить круг клиентов сервера. Вам необходимо будет организовать поддержку нескольких кодовых страниц для русскоязычных документов. Приведенный выше список из четырех кодировок удовлетворит более 99% всех возможных абонентов сервера.

Вообще говоря, в составе языка HTML имеются теги, определяющие кодировку документа и должные позволить корректно прочитать документ в любой кодировке.

Для поддержки нескольких кодовых страниц применяется множество методов, которые можно разбить на две группы:

• использование файлов - копий одного документа в разных кодировках

• динамическое преобразование документов из кодировки, в которой они лежат на сервере, в кодировку, поддерживаемую WWW - клиентом.

В первом случае, на сервере физически присутствуют все файлы во всех поддерживаемых кодировках.

Во втором случае, доступ к документам осуществляется через дополнительную программу - перекодировщик, динамически перекодирующую документы сервера в кодировку WWW - клиента. Эта программа может быть CGI - программой, через которую всегда осуществляется доступ к русскоязычной части сервера. На вход такой программе передается реальный путь документа и кодировка WWW - клиента, в которую нужно перекодировать указанный документ.

Программа - перекодировщик может также располагаться между WWW -клиентом и сервером. Однако здесь возникает проблема с перекодировкой всех данных, включая графику, видео, аудио и других нетекстовых материалов. Для ее решения перекодировщику придается дополнительный интеллект - определять тип передаваемых данных по заголовку MIME и решать, перекодировать документ или нет, на основе его типа.

В русской версии Apache есть поддержка перекодировки средствами сервера. Для этого используется директива CharsetRecodeTable.

CharsetRecodeTable <кодировка1> <кодировка2> <таблица 1-2> <таблица2-1>

Пример:

CharsetRecodeTable koi8-r ISO-8859-5 /usr/local/apache/conf/tables/russian/koi-iso.tab CharsetRecodeTable koi8-r ibm866 /usr/local/apache/conf/tables/nissian/koi-alt.tab CharsetRecodeTable koi8-r Windows-1251 /usr/local/apache/conf/tables/russian/koi-win.tab

Индексация

Если в каталоге .../htdocs нет файла index.html, Apache создает файл под названием "Index of/", в котором "/" означает каталог DocumentRoot. Для большинства случаев, этого, без сомнения, будет достаточно. Но поскольку слепленный на скорую руку индекс — первое, что видит клиент, то, скорее всего, целесообразно будет создать что-нибудь поприличнее.

Составление улучшенных индексов в Apache

Способов достичь этой цели существует великое множество. В Apache есть специальные директивы для настройки индексного файла. Ключевой директивой здесь является Fancyindexing.

Fancyindexing <оп или off>

Эта директива задает применение расширенной индексации, при использовании которой можно задать специальный текст описания как отдельных файлов, так и списка. С помощью директивы indexignore можно исключить файлы из списка. В приведенном ниже примере с помощью директивы Indexignore отключается просмотр каталога /icons:

<Directory ../htdocs>

Fancyindexing on

Indexignore /icons

<Directory>

Indexignore <файл1 файл2 . . . >

В директиве Indexignore приводится список имен файлов (допустимо использование метасимволов). Использование нескольких директив indexignore не заменяют друг друга, а добавляют файлы в это,т список. По умолчанию список включает символ обозначения текущего каталога — ".".

Можно придать странице более привлекательный внешний вид — в противном случае вряд ли можно добиться успеха в Web. Для этого с помощью директивы Add icon можно снабдить имена файлов значками. В каталоге Apache .../icons значков для таких целей более чем достаточно.

Addicon <имя_значка имя_файла>

В этой директиве в качестве первого аргумента указывается имя значка. За ним следуют расширения имен файлов, к которым его следует добавить в индексе. Можно снабдить значками подкаталоги DocumentRoot с помощью символов ^directory^ или обеспечить надлежащее форматирование пустых строк указанием символов ^BLANKICON^

Не все броузеры могут отображать значки. Для таких броузеров можно предложить вместе с именем файла значка текстовую альтернативу: Addicon ("DIR", icons/burst.gif) ""DIRECTORY"" Если указана эта строка, вместо значка burst будет отображаться слово DIR.

Еще одна директива, которая используется при создании индекса - это AddDescriptiom.

AddDescription <строка файл1 файл2. . . >

В директиве AddDescription в двойных кавычках указывается строка описания, за которой следуют имена файлов или метасимволы.

Можно также действовать более тонко и упорядочить наши значки по М1МЕ-типам, используя директиву AddiconByType.

AddIconByType<значок тип_т1те1 тип_mlme2 ...>

В директиве AddIconByType указывается имя файла значка, за которым следует список mime-типов. Apache ищет элемент этого типа в файле mime.types — либо с метасимволом, либо без него.

AddIconByEncoding<значок nnme_кодирование1 lnlme_кодированиеt..>

В этой директиве указывается имя файла значка, за которым следует список методов кодирования MIME. Например, файлы x-compress можно снабдить значками с помощью директивы:

AddIconByEncoding (СОМР, icons/d.gif) application/x-compress

Можно задать верхние и нижние колонтитулы в наших индексах с помощью директив HeaderName и ReadmeName.

HeaderName <имя-файла>

Аргумент имя-файла задает имя файла, содержимое которого включается в заголовок индекса. Это имя файла задается относительно индексируемого каталога. Apache пытается включить в индекс содержимое файла имя-файла.hml, а если такой файл не найден, то содержимое текстового файла имя-файла.

ReadmeName <имя-файла>

Аргумент имя-файла задает имя файла, содержимое которого включается в нижний колонтитул индекса. Это имя файла задается относительно индексируемого каталога. Apache пытается включить в индекс содержимое имя-файла.htтl, а если такой файл не найден, то содержимое текстового файла имя-файла.

Так как файлы HEADER и README могут содержать HTML-сценарии, то при желании можно сделать так, чтобы перечень содержимого каталога содержал различные интерактивные штучки. Кроме того, с помощью директивы indexOptions можно попробовать организовать более тонкое управление индексом:

IndexOptions <опция опция. . . >

Можно указывать следующие опции:

FancyIndexing

Включение расширенной индексации каталогов.

IconsAreLinks

При задании этой опции в гиперссылку в расширенном индексе вместе с именем файла будут включаться значки. ScanHTMLTitles

При задании этой опции для создания расширенного индекса будут извлекаться заголовки из HTML-документа. Если файл не имеет описания, назначенного ему директивой AddDescription, Apache считываетиз всех документов содержимое тегов <title>. это требует больших затрат ресурсов центрального процессора и жесткого диска.

SuppressLastModified

Отмена отображения даты последней модификации в расширенном индексе.

SuppressSize

Отмена отображения объема файла в расширенном индексе.

SuppressDescription

Отмена отображения описания файла в расширенном индексе. По умолчанию ни одна из опций не включена. Если для каталога указаны несколько директив indexOptions, то для каждого подкаталога используются установки той директивы, которая конкретно применена для данного подкаталога; опции не сливаются. Рассмотрим пример индексного каталога. Файл конфигурации выглядит следующим образом:

#Файл ../conf/httpd.conf

User nobody

Group nobody

ServerName localhost

AccessConfig /dev/null

ResourceConfig /dev/null

ServerName localhost

ServerAdmin root@localhost

DocumentRoot/usr/local/apache/htdocs

ErrorLog/usr/local/cipache/logs/error_log

TransferLog/iisr/local/apache/logs/access_log

<Directory/usr/loccil/apache/htdocs>

Fancyindexing on

AddDescription "HTML-документ" *.html

AddDescription "Рисунок GIF" *.gif

AddDescription "Рисунок JPEG" *.jpg

AddDescription "Звуковой файл" *.wav

AddIconicons/folder.gif^^DIRECTORY^^

AddIcon icons/image1 -gif-gif

AddIcon icons/image2.gif.jpg

AddIcon icons/image1.gif-gif

AddIcon icons/layout, gif.html

AddIcon icons/sound I .gif.-wav

AddIcon icons/sound2.gif.mid

</Directory>

Ниже приведен результат обращения к каталогу /usr/local/apache/htdocs при такой конфигурации сервера.

Рис. 1. Пример индексного каталога

Соседние файлы в папке lect_doc