Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149      150      151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 150. Модуль Apache mod_include

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

Включение серверных включений

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

 AddType текст/html .shtml
AddOutputFilter ВКЛЮЧАЕТ .shtml 

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

 Опции +Включает 

Для обратной совместимости server-parsed обработчик также активирует фильтр INCLUDES. Кроме того, Apache активирует фильтр INCLUDES для любого документа с типом mime text/x-server-parsed-html или text/x-server-parsed-html3 (и результирующий вывод будет иметь тип mime text/html ).

Для получения дополнительной информации см. наш учебник по включениям на стороне сервера.

PATH_INFO с включениями на стороне сервера

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

Доступные элементы

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

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

Значение часто будет заключено в двойные кавычки, но также возможны одинарные кавычки ( ' ) и обратные кавычки ( ). ` Многие команды допускают только одну пару атрибут-значение. Обратите внимание, что перед терминатором комментария ( --> ) должен стоять пробел, чтобы он не считался частью токена SSI. Обратите внимание, что начальный элемент <!--# представляет собой один токен и не может содержать пробелов.

Допустимые элементы перечислены в следующей таблице:

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

Элементы SSI могут быть определены модулями, отличными от mod_include . На самом деле exec элемент предоставляется mod_cgi , и будет доступен только в том случае, если этот модуль загружен.

Элемент комментария

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

Этот синтаксис доступен в версии 2.4.21 и выше.

<!--#comment Blah Blah Blah -->

Элемент конфигурации

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

echomsg ( Апач 2.1 и выше )

Значение представляет собой сообщение, которое отправляется обратно клиенту, если элемент echo пытается повторить неопределенную переменную. Это отменяет любые SSIUndefinedEcho директивы.

<!--#config echomsg="[Value Undefined]" -->

errmsg

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

<!--#config errmsg="[Oops, something broke.]" -->

sizefmt

Значение задает формат, который будет использоваться при отображении размера файла. Допустимые значения bytes для количества в байтах или abbrev для количества в килобайтах или мегабайтах, например, размер 1024 байта будет напечатан как «1K».

<!--#config sizefmt="abbrev" -->

timefmt

Значение представляет собой строку, которая будет использоваться подпрограммой strftime(3) библиотеки при печати дат.

<!--#config timefmt=""%R, %B %d, %Y"" -->

Элемент эха

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

Атрибуты:

var
Значением является имя переменной для печати.
decoding

Указывает, должен ли Apache удалить кодировку из переменной перед дальнейшей обработкой переменной. По умолчанию это none , где декодирование не выполняется. Если установлено значение url , будет выполняться декодирование URL-адресов (также известное как %-encoding; это подходит для использования в URL-адресах в ссылках и т. д.). Если установлено значение urlencoded , кодировка, совместимая с application/x-www-form-urlencoded (найденная в строках запроса), будет удалена. Если установлено значение base64 , будет декодировано base64, а если установлено значение entity , кодировка объекта HTML будет удалена. Декодирование выполняется до любого дальнейшего кодирования переменной. Несколько кодировок можно удалить, указав более одной кодировки, разделенной запятыми. Настройка декодирования остается в силе до тех пор, пока не встретится следующий атрибут декодирования или элемент не завершится.

Атрибут decoding должен предшествовать соответствующему var атрибуту, чтобы быть эффективным.

encoding

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

Атрибут encoding должен предшествовать соответствующему var атрибуту, чтобы быть эффективным.

Чтобы избежать проблем с межсайтовым скриптингом, всегда следует кодировать предоставленные пользователем данные.

Пример

<!--#echo encoding="entity" var="QUERY_STRING" -->

Исполнительный элемент

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

cgi

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

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

Пример

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

Если скрипт возвращает Location: заголовок вместо вывода, то он будет преобразован в привязку HTML.

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

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

cmd

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

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

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

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

Элемент fsize

Эта команда печатает размер указанного файла в соответствии со sizefmt спецификацией формата. Атрибуты:

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

This file is <!--#fsize file="mod_include.html" --> bytes.

Значение file не может начинаться с косой черты ( / ) и не может содержать ../ ссылку на файл над текущим каталогом или за пределами корня документа. Попытка сделать это приведет к сообщению об ошибке: The given path was above the root path .
virtual
Значение представляет собой (%-encoded) URL-путь. Если он не начинается с косой черты (/), то считается, что он относится к текущему документу. Обратите внимание, что здесь печатается не размер какого-либо вывода CGI, а размер самого сценария CGI.

This file is <!--#fsize virtual="/docs/mod/mod_include.html" --> bytes.

Обратите внимание, что во многих случаях это одно и то же. Однако этот file атрибут не учитывает псевдонимы пространства URL-адресов.

Элемент фластмода

Эта команда печатает дату последней модификации указанного файла в соответствии со timefmt спецификацией формата. Атрибуты такие же, как и у fsize команды.

Включаемый элемент

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

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

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

Значение представляет собой (%-encoded) URL-путь. URL-адрес не может содержать схему или имя хоста, а только путь и необязательную строку запроса. Если он не начинается с косой черты (/), то считается, что он относится к текущему документу.

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

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

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

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

Если KeptBodySize директива правильно настроена и действительна для этого включенного файла, попытки POST-запросов к вложенному HTML-документу будут также переданы в подзапросы как POST-запросы. Без директивы все подзапросы обрабатываются как запросы GET.

onerror

Значение представляет собой (%-кодированный) URL-путь, который отображается, если предыдущая попытка включить файл или виртуальный атрибут не удалась. Чтобы быть эффективным, этот атрибут должен быть указан после охватываемых файловых или виртуальных атрибутов. Если попытка включить путь onerror не удалась или если onerror не указан, будет включено сообщение об ошибке по умолчанию.

# Simple example
<!--#include virtual="/not-exist.html" onerror="/error.html" -->

# Dedicated onerror paths
<!--#include virtual="/path-a.html" onerror="/error-a.html" virtual="/path-b.html" onerror="/error-b.html" -->

Элемент printenv

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

Пример

<pre> <!--#printenv --> </pre>

Элемент набора

Это устанавливает значение переменной. Атрибуты:

var
Имя переменной для установки.
value
Значение, присваиваемое переменной.
decoding

Указывает, должен ли Apache удалить кодировку из переменной перед дальнейшей обработкой переменной. По умолчанию это none , где декодирование не выполняется. Если установлено значение url , urlencoded , base64 или entity , будет выполняться декодирование URL, декодирование application/x-www-form-urlencoded, декодирование base64 или декодирование объекта HTML соответственно. Можно указать более одного декодирования, разделив их запятыми. Настройка декодирования остается в силе до тех пор, пока не встретится следующий атрибут декодирования или элемент не завершится. Атрибут decoding должен предшествовать соответствующему var атрибуту, чтобы быть эффективным.

encoding

Указывает, как Apache должен кодировать специальные символы, содержащиеся в переменной, перед их установкой. По умолчанию это none , где кодирование не выполняется. Если установлено значение url , urlencoding , base64 или entity , кодировка URL, кодировка application/x-www-form-urlencoded, кодировка base64 или кодировка объекта HTML будут выполняться соответственно. Можно указать более одной кодировки, разделив их запятыми. Параметр кодирования останется в силе до тех пор, пока не встретится следующий атрибут кодирования или элемент не завершится. Атрибут encoding должен предшествовать соответствующему var атрибуту, чтобы быть эффективным. Кодировки применяются после удаления всех декодирований.

Пример

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

Включить переменные

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

DATE_GMT
Текущая дата по Гринвичу.
DATE_LOCAL
Текущая дата в местном часовом поясе.
DOCUMENT_ARGS
Эта переменная содержит строку запроса активного документа SSI или пустую строку, если строка запроса не включена. Для подзапросов, вызванных include директивой SSI, QUERY_STRING будет представлять строку запроса подзапроса и DOCUMENT_ARGS будет представлять строку запроса документа SSI. (Доступно в Apache HTTP Server 2.4.19 и более поздних версиях.)
DOCUMENT_NAME
Имя файла (за исключением каталогов) документа, запрошенного пользователем.
DOCUMENT_URI
URL-адрес (%-decoded) документа, запрошенного пользователем. Обратите внимание, что в случае вложенных включаемых файлов это не URL-адрес текущего документа. Также обратите внимание, что если URL-адрес изменен внутренне (например, с помощью alias или directoryindex ), отображается измененный URL-адрес.
LAST_MODIFIED
Дата последней модификации документа, запрошенного пользователем.
QUERY_STRING_UNESCAPED
Если в запросе активного документа SSI присутствует строка запроса, эта переменная содержит (%-decoded) строку запроса, экранированную для использования в оболочке (специальным символам, таким как & и т. д., предшествует обратная косая черта). Не устанавливается, если строка запроса отсутствует. Используйте DOCUMENT_ARGS , если экранирование оболочки нежелательно.

Замена переменной

Подстановка переменных выполняется внутри строк в кавычках в большинстве случаев, когда они могут разумно использоваться в качестве аргумента директивы SSI. Сюда входят директивы config , exec , flastmod , fsize , include , echo , и set . Если SSILegacyExprParser установлено значение on , замена также происходит в аргументах условных операторов. Вы можете вставить буквальный знак доллара в строку, используя обратную косую черту:

<!--#set var="cur" value="\$test" -->

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

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

Это приведет к тому, что Zed переменная будет установлена в " X_Y ", если REMOTE_HOST " X " и REQUEST_METHOD " Y ".

Элементы управления потоком

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

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

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

Операторы elif или else используются для помещения текста в выходной поток, если исходное условие test_condition было ложным. Эти элементы являются необязательными.

Элемент endif завершает if элемент и является обязательным.

test_condition — это логическое выражение, которое следует синтаксису ap_expr. Синтаксис можно изменить для совместимости с Apache HTTPD 2.2.x с помощью SSILegacyExprParser .

Переменные SSI, установленные с помощью var элемента, экспортируются в среду запроса, и к ним можно получить доступ с помощью reqenv функции. В качестве сокращения имя функции v также доступно внутри mod_include .

В приведенном ниже примере будет напечатано «из локальной сети», если IP-адрес клиента принадлежит к подсети 10.0.0.0/8.

<!--#if expr='-R "10.0.0.0/8"' -->
from local net
<!--#else -->
from somewhere else
<!--#endif -->

В приведенном ниже примере будет напечатано «foo is bar», если для переменной foo установлено значение «bar».

<!--#if expr='v("foo") = "bar"' -->
foo is bar
<!--#endif -->

Справочная документация

См. также: Выражения в HTTP-сервере Apache для полного справочника и примеров. Ограниченные функции недоступны внутри mod_include

Устаревший синтаксис выражений

В этом разделе описывается синтаксис элемента, #if expr если SSILegacyExprParser установлено значение on .

string
истина, если строка не пуста
-A string

Значение true, если URL-адрес, представленный строкой, доступен по конфигурации, в противном случае — значение false. Это полезно, когда содержимое страницы должно быть скрыто от пользователей, которым не разрешено просматривать URL-адрес, например ссылку на этот URL-адрес. Обратите внимание, что URL-адрес проверяется только на то, будет ли предоставлен доступ, а не на то, существует ли URL-адрес.

Пример

<!--#if expr="-A /private" -->
Click <a href="/private">here</a> to access private information.
<!--#endif -->

string1 = string2
string1 == string2
string1 != string2

Сравните строку1 со строкой2 . Если строка2 имеет форму, то она обрабатывается как регулярное выражение. Регулярные выражения реализованы движком PCRE и имеют тот же синтаксис, что и в Perl 5. Обратите внимание, что это просто псевдоним для и ведет себя точно так же. /string2/ == =

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

Пример

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

string1 < string2
string1 <= string2
string1 > string2
string1 >= string2
Сравните строку1 со строкой2 . Обратите внимание, что строки сравниваются буквально (с использованием 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' . Строки без кавычек не могут содержать пробелы (пробелы и табуляции), поскольку они используются для разделения токенов, таких как переменные. Если в строке найдено несколько строк, они объединяются с помощью пробелов. Так,

string1    string2 приводит и приводит к . string1 string2



'string1    string2' string1    string2

Оптимизация логических выражений

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

  • Выражения оцениваются слева направо
  • Бинарные логические операторы ( && и || ) замыкаются везде, где это возможно. В заключение с приведенным выше правилом, что означает, mod_include сначала оценивает левое выражение. Если левого результата достаточно для определения конечного результата, обработка здесь останавливается. В противном случае он оценивает правую сторону и вычисляет конечный результат как из левого, так и из правого результатов.
  • Оценка короткого замыкания отключена, пока есть регулярные выражения для обработки. Они должны быть оценены, чтобы заполнить переменные обратной ссылки ( $1 .. $9 ).

Если вы хотите посмотреть, как обрабатывается конкретное выражение, вы можете перекомпилировать его mod_include с помощью -DDEBUG_INCLUDE опции компилятора. Это вставляет информацию о каждом проанализированном токенизаторе выражения, дереве синтаксического анализа и способе его оценки в выходные данные, отправляемые клиенту.

Экранирование косых черт в строках регулярных выражений

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



Директива SSIEndTag

Описание:Строка, которая завершает включаемый элемент
Синтаксис: SSIEndTag tag
По умолчанию: SSIEndTag "-->"
Контекст:конфигурация сервера, виртуальный хост
Положение дел:База
Модуль:mod_include

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

 SSIEndTag "%>" 

Смотрите также

  • SSIStartTag


Директива SSIErrorMsg

Описание:Сообщение об ошибке, отображаемое при наличии ошибки SSI
Синтаксис: SSIErrorMsg message
По умолчанию: SSIErrorMsg "[an error occurred while processing this directive]"
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Все
Положение дел:База
Модуль:mod_include

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

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

 SSIErrorMsg "<!-- Ошибка -->" 


Директива SSIETag

Описание:Определяет, будут ли ETag генерироваться сервером.
Синтаксис: SSIETag on|off
По умолчанию: SSIETag off
Контекст:каталог, .htaccess
Положение дел:База
Модуль:mod_include
Совместимость:Доступно в версии 2.2.15 и выше.

В обычных условиях файл, отфильтрованный с помощью, mod_include может содержать элементы, которые либо создаются динамически, либо могут быть изменены независимо от исходного файла. В результате по умолчанию серверу предлагается не генерировать ETag заголовок для ответа, добавляя no-etag примечания к запросу.

Директива SSIETag подавляет такое поведение и позволяет серверу генерировать ETag заголовок. Это можно использовать для включения кэширования вывода. Обратите внимание, что внутренний сервер или генератор динамического содержимого может генерировать собственный ETag, игнорируя no-etag , и этот ETag будет передаваться mod_include независимо от значения этого параметра. SSIETag может принимать следующие значения:

off
no-etag будет добавлен в примечания к запросу, а серверу будет предложено не генерировать ETag. Если сервер игнорирует значение no-etag и все равно генерирует ETag, ETag будет учитываться.
on
Существующие ETag будут учитываться, а ETag, сгенерированные сервером, будут переданы в ответе.


Директива SSILastModified

Описание:Определяет, Last-Modified генерируются ли заголовки сервером.
Синтаксис: SSILastModified on|off
По умолчанию: SSILastModified off
Контекст:каталог, .htaccess
Положение дел:База
Модуль:mod_include
Совместимость:Доступно в версии 2.2.15 и выше.

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

Директива SSILastModified переопределяет это поведение и позволяет Last-Modified учитывать заголовок, если он уже присутствует, или устанавливать, если заголовок еще не присутствует. Это можно использовать для включения кэширования вывода. SSILastModified может принимать следующие значения:

off
Заголовок Last-Modified будет удален из ответов, если XBitHack директива не установлена full , как описано ниже.
on
Заголовок Last-Modified будет учитываться, если он уже присутствует в ответе, и будет добавлен к ответу, если ответ представляет собой файл, а заголовок отсутствует. Директива SSILastModified имеет приоритет над XBitHack .


Директива SSILegacyExprParser

Описание:Включите режим совместимости для условных выражений.
Синтаксис: SSILegacyExprParser on|off
По умолчанию: SSILegacyExprParser off
Контекст:каталог, .htaccess
Положение дел:База
Модуль:mod_include
Совместимость:Доступно в версии 2.3.13 и выше.

Начиная с версии 2.3.13, mod_include переключился на новый синтаксис ap_expr для условных выражений в #if элементах управления потоком. Эта директива позволяет переключиться на старый синтаксис, совместимый с Apache HTTPD версии 2.2.x и более ранними.



Директива SSIStartTag

Описание:Строка, с которой начинается включаемый элемент
Синтаксис: SSIStartTag tag
По умолчанию: SSIStartTag "<!--#"
Контекст:конфигурация сервера, виртуальный хост
Положение дел:База
Модуль:mod_include

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

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

 SSIStartTag "<%"
SSIEndTag "%>" 

Приведенный выше пример, в котором также указано соответствие SSIEndTag , позволит вам использовать директивы SSI, как показано в примере ниже:

Директивы SSI с чередующимися начальными и конечными тегами

<%printenv %>

Смотрите также

  • SSIEndTag


Директива SSITimeFormat

Описание:Настраивает формат, в котором отображаются строки даты
Синтаксис: SSITimeFormat formatstring
По умолчанию: SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Все
Положение дел:База
Модуль:mod_include

Эта директива изменяет формат, в котором строки даты отображаются при отображении DATE переменных среды. Строка форматирования такая же, как strftime(3) в стандартной библиотеке C.

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

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

Приведенная выше директива приведет к тому, что время будет отображаться в формате «22:26, 14 июня 2002 г.».



Директива SSIUndefinedEcho

Описание:Строка, отображаемая при отображении неустановленной переменной
Синтаксис: SSIUndefinedEcho string
По умолчанию: SSIUndefinedEcho "(none)"
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Все
Положение дел:База
Модуль:mod_include

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

 SSIUndefinedEcho "<!-- undef -->" 


Директива XBitHack

Описание:Разобрать директивы SSI в файлах с установленным битом выполнения
Синтаксис: XBitHack on|off|full
По умолчанию: XBitHack off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Параметры
Положение дел:База
Модуль:mod_include

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

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

Примечание

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

Директива SSILastModified имеет приоритет над XBitHack директивой, когда SSILastModified установлено значение on .



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149      150      151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru