Использование обработчиков 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: Разбирает файл карты типов для согласования содержимого. (
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 обработки запроса. Обработчики реализуются так же, как и раньше, но вместо типа содержимого используется имя обработчика. Хотя это и не обязательно, для имен обработчиков принято использовать слова, разделенные дефисами, без косых черт, чтобы не занимать пространство имен типов MIME.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/handler.html