<-
Apache > HTTP Server > Documentation > Version 2.0 > Modules

Apache Модуль mod_include

Description: разобранные сервером документы html (Сторона Сервера Включает),
Status: основа
Module Identifier: include_module
Source File: mod_include.c
Compatibility: осуществленный как фильтр продукции начиная с Apacheа 2.0

резюме

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

директивы

темы

см. также

top

Enabling Server-Side Includes

Сторона Сервера Включает, осуществлены INCLUDES filter . если документы, содержащие сторону сервера включают директивы, даются расширение .shtml, следующие директивы заставят Apacheа разобрать их и назначить получающийся документ тип пантомимы text/html :

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

следующую директиву нужно дать для справочников, содержащих shtml файлы (типично в a <Directory> секция, но эта директива также действительно в .htaccess файлы, если AllowOverride Options установлен):

Options +Includes

для назад совместимости, server-parsed handler также активизирует, ВКЛЮЧАЕТ фильтр. Также, Apache активизирует, ВКЛЮЧАЕТ фильтр для любого документа с типом пантомимы text/x-server-parsed-html или text/x-server-parsed-html3 (и получающаяся продукция будет иметь тип пантомимы text/html ).

за дополнительной информацией, см. наш Tutorial on Server Side Includes .

top

PATH_INFO with Server Side Includes

файлы, обработанные для стороны сервера включают, больше не принимают запросы с PATH_INFO (перемещение информации имени пути) по умолчанию. Вы можете использовать AcceptPathInfo директива, чтобы формировать сервер, чтобы принять запросы с PATH_INFO .

top

Basic Elements

документ разобран как документ HTML, со специальными командами, вложенными как комментарии SGML. Команда имеет синтаксис:

<!--# element attribute = value attribute = value ... -->

ценность будет часто прилагаться в двойных кавычках, но единственных кавычках ( ' ) и обратные галочки ( ` ) также возможны. Много команд только позволяют единственной паре ценности признака. Отметьте что терминатор комментария ( --> ) нужно предшествовать whitespace, чтобы гарантировать, что это не считает частью символа ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ. Отметьте что продвижение <!--# один символ и, возможно, не содержит никакого whitespaces.

позволенные элементы перечислены в следующем столе:

элемент описание
config формировать форматы продукции
echo переменные печати
exec выполнить внешние программы
fsize напечатать размер файла
flastmod напечатать в прошлый раз модификации файла
include включить файл
printenv напечатать все доступные переменные
set установить ценность переменной

элементы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ могут быть определены модулями кроме mod_include . фактически, exec элементом обеспечивают mod_cgi , и только будет доступным, если этот модуль будет загружен.

The config Element

эта команда управляет различными аспектами парсинга. Действительные признаки:

errmsg
ценность - сообщение, которое посылают назад клиенту, если ошибка происходит, разбирая документ. Это отвергает любого SSIErrorMsg директивы.
sizefmt
ценность заставляет формат использоваться который показ размера файла. Действительные ценности bytes для счета в байтах, или abbrev для счета в КБ или МБ как соответствующий, например размер 1024 байтов будет напечатан как "1 КБ".
timefmt
ценность - вереница, которая используется strftime(3) рутина библиотеки, печатая даты.

The echo Element

эта команда печатает один из include variables , определенный ниже. Если переменная сброшена, результат определен SSIUndefinedEcho директива. Любые напечатанные даты подчинены в настоящее время формируемый timefmt .

признаки:

var
ценность - название переменной, чтобы напечатать.
encoding

определяет, как Apache должен закодировать специальные характеры, содержавшиеся в переменной прежде outputting их. Если установлено в none , никакое зашифровывание не будет сделано. Если установлено в url , тогда зашифровывание URL (также известный как % - зашифровывание; это является соответствующим для использования в пределах URL в связях, и т.д.) будет выполнен. В начале echo элемент, неплатеж собирается entity , приводя к зашифровыванию юридического лица (который является соответствующим в контексте элемента HTML брускового уровня, например. параграф текста). Это может быть изменено, добавляя encoding признак, который останется в силе до следующего encoding с признаком сталкиваются или концы элемента, какой бы ни прибывает сначала.

encoding признак должен предшествовать передача var признак, чтобы быть эффективным, и только специальные характеры как определено в зашифровывании характера ISO-8859-1 будет закодирован. Этот процесс зашифровывания, возможно, не имеет желательного результата, если различное зашифровывание характера находится в использовании.

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

The exec Element

exec команда выполняет данную команду снаряда или подлинник CGI. Это требует mod_cgi присутствовать в сервере. Если Options IncludesNOEXEC установлен, эта команда полностью выведена из строя. Действительные признаки:

cgi

ценность определяет (% - закодированный) ДОРОЖКА URL к подлиннику CGI. Если дорожка не начинается с разреза (/), то это взято, чтобы быть относительно текущего документа. Документ, на который ссылается эта дорожка призван как подлинник CGI, даже если сервер обычно не признавал бы это также. Однако, справочник, содержащий подлинник нужно позволить для подлинников CGI (с ScriptAlias или Options ExecCGI ).

подлинник CGI дается PATH_INFO и вереница вопроса ( QUERY_STRING ) оригинального запроса от клиента; они не может быть определен в дорожке URL. Включающиеся переменные будут доступны для подлинника в дополнение к стандарту CGI окружающая среда.

Example

<!--#exec cgi="/cgi-bin/example.cgi" -->

если подлинник возвращает a Location: удар головой вместо продукции, тогда это будет переведено на якорь HTML.

include virtual элемент должен использоваться в предпочтении к exec cgi . в частности если Вы должны передать дополнительные аргументы программе CGI, используя вереницу вопроса, это не может быть сделано с exec cgi , но может быть сделан с include virtual , как показано здесь:

<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

cmd

сервер выполнит данное использование вереницы /bin/sh . include variables являются доступными для команды, в дополнение к обычному набору переменных CGI.

использование #include virtual почти всегда предпочитается использованию также #exec cgi или #exec cmd . прежний ( #include virtual ) использует стандартный Apache механизм подзапроса, чтобы включить файлы или подлинники. Это намного лучше проверено и поддержано.

кроме того, на некоторых платформах, как Win32, и на unix, используя suexec , Вы не можете передать аргументы команде в exec директива, или иначе включают места в команду. Таким образом, в то время как следующее будет работать под non-suexec конфигурацией на unix, это не будет производить желательный результат под Win32, или при управлении suexec:

<!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->

The fsize Element

эта команда печатает размер указанного файла, подчиненного sizefmt спецификация формата. Признаки:

file
ценность - дорожка относительно справочника, содержащего текущий разбираемый документ.
virtual
ценность (% - закодирована) ДОРОЖКА URL. Если это не начинается с разреза (/) тогда, это взято, чтобы быть относительно текущего документа. Отметьте, что это делает нет напечатать размер любой продукции CGI, но размера подлинника CGI непосредственно.

The flastmod Element

эта команда печатает последнюю дату модификации указанного файла, подчиненного timefmt спецификация формата. Признаки - то же самое что касается fsize команда.

The include Element

эта команда вставляет текст другого документа или файла в разобранный файл. Любой включенный файл подчинен обычному контролю доступа. Если справочник, содержащий разобранный файл имеет Options IncludesNOEXEC набор, тогда только документы с типом MIME текста ( text/plain , text/html и т.д.), будет включен. Иначе подлинники CGI призваны как нормальное использование полного URL, данного в команде, включая любую вереницу вопроса.

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

file
ценность - дорожка относительно справочника, содержащего текущий разбираемый документ. Это не может содержать ../ , и при этом это не может быть абсолютная дорожка. Поэтому, Вы не можете включить файлы, которые являются вне корня документа, или выше текущего документа в директивной структуре. virtual признак должен всегда использоваться в предпочтении к этому.
virtual

ценность (% - закодирована) ДОРОЖКА URL. URL не может содержать схему или hostname, только дорожка и дополнительная вереница вопроса. Если это не начинается с разреза (/) тогда, это взято, чтобы быть относительно текущего документа.

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

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

<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

include virtual должен использоваться в предпочтении к exec cgi включать продукцию программ CGI в документ HTML.

The printenv Element

это печатает внесение в список всех существующих переменных и их ценностей. Специальные характеры - закодированное юридическое лицо (см. echo элемент для деталей) перед быть продукцией. Нет никаких признаков.

Example

<!--#printenv -->

The set Element

это устанавливает ценность переменной. Признаки:

var
название переменной, чтобы установить.
value
ценность, чтобы дать переменную.

Example

<!--#set var="category" value="help" -->

top

Include Variables

в дополнение к переменным в стандартной окружающей среде CGI, они доступны для echo команда, для if и elif , и к любой программе, призванной в соответствии с документом.

DATE_GMT
текущая дата в Среднем времени по Гринвичу.
DATE_LOCAL
текущая дата в зоне местного времени.
DOCUMENT_NAME
имя файла (исключая справочники) документа, который требует пользователь.
DOCUMENT_URI
(% - расшифрованный) дорожка URL документа, который требует пользователь. Отметьте, что в случае вложенного включают файлы, это нет URL для текущего документа.
LAST_MODIFIED
последняя дата модификации документа, который требует пользователь.
QUERY_STRING_UNESCAPED
если вереница вопроса присутствует, эта переменная содержит (% - расшифрованный) вереница вопроса, которая сбежавший для использования снаряда (специальные характеры как & и т.д. предшествуются наклонными чертами влево).
top

Variable Substitution

переменная замена сделана в пределах указанных верениц в большинстве случаев, где они могут разумно произойти как аргумент директиве ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ. Это включает config , exec , flastmod , fsize , include , echo , и set директивы, так же как аргументы условным операторам. Вы можете вставить буквальный долларовый признак в вереницу, используя цитирование наклонной черты влево:

<!--#if expr="$a = \$test" -->

если переменной ссылкой нужно заменить в середине последовательности характера, которую можно было бы иначе счесть действительным идентификатором в его собственном праве, это может быть снято неоднозначность, прилагая ссылку в фигурных скобках, la замена снаряда:

<!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->

это приведет Zed переменная, собирающаяся " X_Y "если REMOTE_HOST является " X REQUEST_METHOD является " Y ".

ниже примера напечатает "в foo" если DOCUMENT_URI /foo/file.html , "в бруске", если это /bar/file.html и "ни в одном" иначе:

<!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' -->
in foo
<!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' -->
in bar
<!--#else -->
in neither
<!--#endif -->

top

Flow Control Elements

основные элементы контроля потока:

<!--#if expr=" test_condition " -->
<!--#elif expr=" test_condition " -->
<!--#else -->
<!--#endif -->

if элемент работает как если утверждение в языке программирования. Испытательное условие оценено и если результат верен, то текст до следующего elif , else или endif элемент включен в поток продукции.

elif или else утверждения - использоваться, чтобы поместить текст в поток продукции если оригинал test_condition был ложным. Эти элементы являются дополнительными.

endif элемент заканчивается if элемент и требуется.

test_condition является одним из следующего:

string
верный, если вереница не пустым
string1 = string2
string1 != string2

сравнитесь string1 с string2 . если string2 имеет форму / string2 / тогда это рассматривают как регулярное выражение. Регулярные выражения осуществлены PCRE двигатель и имеет тот же самый синтаксис как те в perl 5 .

если Вы соответствуете положительный ( = ), Вы можете захватить сгруппированные части регулярного выражения. Захваченные части сохранены в специальных переменных $1 .. $9 .

Example

<!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" -->
<!--#set var="session" value="$1" -->
<!--#endif -->

string1 < string2
string1 <= string2
string1 > string2
string1 >= string2
сравнитесь string1 с string2 . отметить, это натягивает, сравнены буквально (использование strcmp(3) ). Поэтому вереница "100" - "меньше чем 20".
( test_condition )
верный, если test_condition является верным
! test_condition
верный, если test_condition является ложным
test_condition1 && test_condition2
верный, если оба test_condition1 и test_condition2 являются верными
test_condition1 || test_condition2
верный, если также test_condition1 или test_condition2 является верным

" = "и" != "свяжите более сильно чем" && "и" || "." ! "связывает наиболее сильно. Таким образом, следующее эквивалентны:

<!--#if expr="$a = test1 && $b = test2" -->
<!--#if expr="($a = test1) && ($b = test2)" -->

булевы операторы && и || разделить тот же самый приоритет. Так, если Вы хотите связать такой оператор более сильно, Вы должны использовать круглые скобки.

что - нибудь это не признано как переменная или оператор, рассматривают как вереница. Вереницы могут также быть указаны: 'string' . неупомянутые вереницы не могут содержать whitespace (бланки и счета), потому что это используется, чтобы отделить символы, типа переменных. Если многократные вереницы найдены в ряд, они связаны, используя бланки. Так,

string1      string2 results in string1   string2

and

' string1      string2 ' results in string1      string2 .

top

SSIEndTag Directive

Description: вереница, которая заканчивает включающийся элемент
Syntax: SSIEndTag tag
Default: SSIEndTag "-->"
Context: сервер config, действительный хозяин
Status: основа
Module: mod_include
Compatibility: доступный в версии 2.0.30 и позже.

эта директива изменяет вереницу это mod_include ищет, чтобы отметить конец включающегося элемента.

Example

SSIEndTag "%>"

см. также

top

SSIErrorMsg Directive

Description: ошибочное сообщение показало, когда есть ошибка ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ
Syntax: SSIErrorMsg message
Default: SSIErrorMsg "[an error occurred while processing this directive]"
Context: сервер config, действительный хозяин, справочник, .htaccess
Override: все
Status: основа
Module: mod_include
Compatibility: доступный в версии 2.0.30 и позже.

SSIErrorMsg директива изменяет ошибочное показанное сообщение когда mod_include сталкивается с ошибкой. Для серверов производства Вы можете рассмотреть изменение ошибочного сообщения по умолчанию к "<!-- Error -->" так, чтобы сообщение было не представлено пользователю.

эта директива имеет тот же самый эффект как <!--#config errmsg= message --> элемент.

Example

SSIErrorMsg "<!-- Error -->"

top

SSIStartTag Directive

Description: вереница, которая начинает включающийся элемент
Syntax: SSIStartTag tag
Default: SSIStartTag "<!--#"
Context: сервер config, действительный хозяин
Status: основа
Module: mod_include
Compatibility: доступный в версии 2.0.30 и позже.

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

Вы можете хотеть использовать этот выбор, если Вы имеете 2 сервера, разбирающие продукцию файла каждые обрабатывающие различные команды (возможно в разное время).

Example

SSIStartTag "<%"
SSIEndTag "%>"

пример, данный выше, который также определяет соответствие SSIEndTag , позволите Вы использовать директивы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ как показано в примере ниже:

SSI directives with alternate start and end tags

<%printenv %>

см. также

top

SSITimeFormat Directive

Description: формирует формат, в котором показаны вереницы даты
Syntax: SSITimeFormat formatstring
Default: SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"
Context: сервер config, действительный хозяин, справочник, .htaccess
Override: все
Status: основа
Module: mod_include
Compatibility: доступный в версии 2.0.30 и позже.

эта директива изменяет формат, в котором вереницы даты показаны, отзываясь эхом DATE переменные окружающей среды. formatstring является как в strftime(3) от стандартной библиотеки C.

эта директива имеет тот же самый эффект как <!--#config timefmt= formatstring --> элемент.

Example

SSITimeFormat "%R, %B %d, %Y"

вышеупомянутая директива заставила бы времена быть показанными в формате "22:26, 14 июня 2002".

top

SSIUndefinedEcho Directive

Description: вереница показала, когда переменная сброса отражена
Syntax: SSIUndefinedEcho string
Default: SSIUndefinedEcho "(none)"
Context: сервер config, действительный хозяин
Status: основа
Module: mod_include
Compatibility: доступный в версии 2.0.34 и позже.

эта директива изменяет вереницу это mod_include показы, когда переменная не установлена и "отражена".

Example

SSIUndefinedEcho "<!-- undef -->"

top

XBitHack Directive

Description: директивы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ разбора в файлах с выполняющимся набором бита
Syntax: XBitHack on|off|full
Default: XBitHack off
Context: сервер config, действительный хозяин, справочник, .htaccess
Override: варианты
Status: основа
Module: mod_include

XBitHack директива управляет парсингом обычных документов html. Эта директива только затрагивает файлы, связанные с типом MIME text/html . XBitHack может взять следующие ценности:

off
никакая специальная обработка выполнимых файлов.
on
любой text/html файл, который имеет выполняющийся пользователем набор бита, будут рассматривать как разобранный сервером документ html.
full
что касается on но также и тест выполняющийся группой бит. Если это установлено, то устанавливают Last-modified дата возвращенного файла, чтобы быть в прошлый измененный раз файла. Если это не установлено, то никакую последнее-измененную дату не посылают. Урегулирование этого бита позволяет клиентам и полномочиям прятать результат про запас запроса.

отметить

Вы не хотели бы использовать полный выбор, если Вы не уверяете, что выполняющийся группой бит сброшен для каждого подлинника ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ, который мог бы #include CGI или иначе производит различную продукцию на каждом хите (или мог потенциально измениться на последующих запросах).