Использование обработчиков Apache
В данном документе описано использование обработчиков Apache.
Что такое обработчик
| Связанные модули | Связанные директивы |
|---|---|
«Обработчик» — это внутреннее представление Apache действия, которое должно быть выполнено при запросе файла. Как правило, файлы имеют неявные обработчики, основанные на типе файла. Обычно все файлы просто обслуживаются сервером, но некоторые типы файлов обрабатываются отдельно.
Обработчики также могут быть настроены явно, основываясь либо на расширениях имен файлов, либо на расположении, без привязки к типу файла. Это выгодно, поскольку это более элегантное решение, а также позволяет связать с файлом как тип, так и обработчик. (См. также Файлы с несколькими расширениями.)
Обработчики могут быть встроенными в сервер или включены в модуль, или они могут быть добавлены с помощью директивы Action. Встроенные обработчики в стандартной дистрибуции следующие:
-
default-handler: Отправка файла с использованием
default_handler(), который является обработчиком по умолчанию для обработки статического контента. (core) -
send-as-is: Отправка файла с HTTP-заголовками как есть. (
mod_asis) -
cgi-script: Обработка файла как CGI-скрипта. (
mod_cgi) -
imap-file: Парсинг как файл правил imagemap. (
mod_imagemap) -
server-info: Получение информации о конфигурации сервера. (
mod_info) -
server-status: Получение отчёта о состоянии сервера. (
mod_status) -
type-map: Парсинг как файл type-map для обработки переговорных процедур по типу содержимого. (
mod_negotiation)
Примеры
Изменение статического контента с помощью CGI-скрипта
Следующие директивы заставят запросы к файлам с расширением html запускать CGI-скрипт footer.pl.
Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html
Затем CGI-скрипт отвечает за отправку первоначально запрошенного документа (на который указывает переменная окружения PATH_TRANSLATED) и выполнение любых необходимых изменений или добавлений.
Файлы с HTTP-заголовками
Следующие директивы позволят включить обработчик send-as-is, используемый для файлов, содержащих собственные HTTP-заголовки. Все файлы в каталоге /web/htdocs/asis/ будут обрабатываться обработчиком send-as-is, независимо от их расширений.
<Directory "/web/htdocs/asis">
SetHandler send-as-is
</Directory> Примечание для программистов
Для реализации функций обработчиков в API Apache было добавлено дополнение, которое вы можете использовать. В частности, в структуру request_rec был добавлен новый элемент:
char *handler
Если вы хотите, чтобы ваш модуль использовал обработчик, вам нужно лишь установить r->handler на имя обработчика в любое время до стадии invoke_handler запроса. Обработчики реализованы так же, как и раньше, но с использованием имени обработчика вместо типа содержимого. Хотя это не обязательно, соглашение об именовании обработчиков — использовать слово, разделённое дефисами, без слэшей, чтобы не захватить пространство имён медиа типов.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/handler.html