═════ SSI значительно расширяет Ваши возможности, позволяя динамически
вставлять, документы или результаты работы CGI в произвольные места
запрошенного документа.
═════ Когда удаленный пользователь запрашивает у Вас файл имеющий
расширение *.SHT, *.SHTM, *.SHTML сервер отдает его с учетом
встречающихся в нем SSI тегов.
════ SSI тег имеет следующий формат:
<!--#имя_тега {переменная="значение" } -->
═════ Внутри "значения" могут применятся подстановки HTTP
переменных или переменных полей формы запроса. Имя
переменной начинается с символа '$' и далее может быть
заключено в фигурные скобки {}, если Вы хотите объеденить
полученное значение с последующим текстом исключая пробелы.
Например значеним "$USER_AGENT" является соответствующая
строка идентифицирующая браузер, а если вы хотите объеденить
ее с текстом "_12345" то используйте "${USER_AGENT}_12345" Для
включения в значение символа '$' используйте '\$', для '\' --
'\\', для '"' -- '\"' и т.д. Если при подстановке,
соответствующая переменная не найдена подставляется значение
"undefined".
═════ Данная версия сервера поддерживает следующие теги:
include
<!--#include virtual="patch/file_name" -->
<!--#include file="full_patch/file_name" -->
Оба варианта этой директивы включают в документ содержимое
файла file_name. В первом случае документ ищется начиная с каталога
сервера. Во втором случае начиная с каталога текущего документа, и
это может быть любой файл на машине, т.е. если маршрут начинается с
"/" или "X:" то каталог текущего документа не подставляется. В обоих
случаях patch вообще может быть опущен. Если в результате
подстановки обнаруживается, что запрашиваемый документ находится на
сервере в подкаталоге /CGI-BIN/ то он воспринемается как CGI и
запускается. Выходной поток соответственно транслируется, начало до
последовательности "\r\n\r\n" убирается. При этом если в имени не
содержалось символа '?' то CGI передается исходный запрос, с которым
обратились к родительскому документу. Если обнаружен '?' то
дальнейшая последовательность будет передана как запрос, она должна
быть соответственно преобразована Вами.
exec
<!--#exec cgi="file_name" -->
<!--#exec cmd="full_patch/file_name" -->
Запуск скрипта. Все аналогично include. В первом случае файл
запускается из коталога CGI-BIN, во втором должен быть задан
полный маршрут.
fsize и lastmod
<!--#fsize virtual="patch/file_name" -->
<!--#fsize file="full_patch/file_name" -->
<!--#lastmod virtual="patch/file_name" -->
<!--#lastmod file="full_patch/file_name" -->
Подставляет размер или дату последней модификации файла.
echo
<!--#echo var="var" -->
Выводит значение переменной.
printenv
<!--#printenv -->
Выводит все переменные.
break
<!--#break -->
Вызывает прекращение обработки документа.
if -- elif -- else -- endif
<!--#if expr="выражение" -->
текст
<!--#elif expr="выражение" -->
текст
<!--#elif expr="выражение" -->
текст
...
<!--#else -->
текст
<!--#endif -->
Подстановка по условию. Текст будет передаваться
пользователю в зависимости от истинности условий. Выражение
может содержать переменные и значения разделенные знаками
логических операций и скобками:
! -- перед вырожением -- простое отридцание
= или == -- равно
!= -- не равно
<,>,<=,>= -- соответственно.
&& между выражениями логическое и.
|| между выражениями логическое или.
Если вообще нет никакого знака сравнения, то значение
выражения сравнивается с "undefined".
Части elif и else могут быть пропущенны.
Часть elif может повторяться сколько угодно раз.
Обязательно долен быть закрывающий тег endif.
set
<!--#set var="переменная" value="значение" -->
Добавление или изменение значения переменной. Не стоит
злоупотреблять этой опцией, так как и количество переменных
которые можно добавить и размер буфера под них ограничены.