Справочные данные:
Справка:
|
Руководство по SSI
Введение
Основным, простейшим, но в то же время чрезвычайно мощным инструментом поддержки
больших наборов документов является SSI (Server-Side Includes - включения на
стороне сервера). Если кто-то из вас знает Си, то он быстро поймет, что SSI
чрезвычайно похож на макроязык. С помощью SSI можно не только в зависимости от
некоторых условий выводить определенные части документа, не только формировать
документ из заранее определенных кусочков, но и вставлять результат работы
некоторого CGI сценария или программы прямо в документ.
Базовые директивы
Директивы SSI включаются в HTML документ в виде комментариев (это не мешает вам
использовать обычные комментарии). Синтакс команд имеет следующий вид:
<!--#element attribute=value attribute=value ... -->
Очень часто значение помещается в двойные кавычки. Некоторые команды позволяют
иметь только одну пару атрибут-значение. Обратите внимание, что заключительная
часть комментария (-->) должна отделяться от директивы пробелом,
иначе она будет воспринята, как ее часть.
Рассмотрим определенные в Apache элементы SSI:
-
config
-
контролирует различные аспекты сканирования. Его атрибутами могут быть:
-
errmsg - устанавливает сообщение, выводящееся при возникновении ошибки; в
большинстве случаев целесообразно установить в пустую строку;
-
sizefmt - устанавливает формат, в котором будет выводиться размер файла. Формат
соответствует передаваемому библиотечной функции strftime;
-
timefmt - устанавливает формат, в котором будет выводиться дата.
-
echo
-
выводит значение установленной переменной SSI. Допустимым атрибутом является
var.
-
fsize
-
выводит размер файла в определенном с помощью
sizefmt формате. Допустимые атрибуты:
-
file - определяет путь к файлу, относительно сканируемого документа;
-
virtual - определяет стандартный кодированный URL, относительно сканируемого
документа, или, при наличии в начале слеша (/) - относительно корня документов
узла.
-
flastmod
-
выводит дату последней модификации файла в определенном с помощью
timefmt формате. Атрибуты аналогичны атрибутам
fsize.
-
include
-
включает текст другого документа или файла в сканируемый файл. К
включаемому файлу применяются все установленные правила ограничения доступа.
Если для каталога, из которого включается файл, установлена опция
IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то
документ не включается, и выводится сообщение об ошибке. CGI сценарии
вызываются, как обычно с помощью URL, который может содержать кодированную
строку запроса (query string). Положение файла указывается с помощью атрибутов:
-
file - указывает путь, относительно сканируемого документа; путь не может
содержать ../ и не может быть абсолютным путем; всегда предпочтительнее
использовать атрибут virtual;
-
virtual - содержит кодированный URL, относительный или абсолютный; URL не может
содержать имя протокола или имя хоста, и может содержать строку запроса.
-
printenv
-
выводит содержимое переменных окружения. Вызывается без параметров.
-
set
-
устанавливает значение переменной. Ее атрибутами являются var,
определяющий имя переменной, и value, определяющий ее значение.
Переменные включения
В дополнение к стандартным окружения CGI, модуль SSI делает доступными для
директив и условий, а также для вызываемых через SSI сценариев следующие
переменные:
-
DATE_GMT
-
текущее время по Гринвичу;
-
DATE_LOCAL
-
текущее локальное (для сервера) время;
-
DOCUMENT_NAME
-
имя файла (без каталогов) документа, запрошенного пользователем;
-
DOCUMENT_URI
-
декодированный URL запрошенного пользователем документа;
-
LAST_MODIFIED
-
дата последней модификации документа, запрошенного
пользователем. То есть во вложенном SSI эта переменная будет содержать имя
"главного" документа, а не вложенного.
Подстановка переменных
Подстановка переменных производится внутри заключенных в кавычки строк в
большинстве аргументов SSI директив. В этих случаях знак доллара можно вставить,
предварив его слешом:
<!--#if expr="$a = /$test" -->
Для предотвращения двусмысленности можно заключать имя переменной в фигурные
скобки:
<!--#set var="Zed" value="${a}bc_${abc}" -->
В результате такого присвоения переменная Zed будет иметь значение "Xbc_Y", если
переменная a равна X, а переменная abc равна Y.
Условные операторы
Базовыми элементами контроля являются:
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
Элементы elif и else являются необязательными. Элемент
endif заканчивает элемент if и является обязательным.
test_condition может быть одним из следующих:
string
|
истинно, если string не пуста
|
string1 = string2
|
истинно, если выполняется условие сравнения. Если string2 имеет форму /string/,
то тогда она интерпретируется, как регулятное выражение. Их синтаксис аналогичен
синтаксису регулярных выражений в Unix команде egrep
|
string1 != string2
|
string1 < string2
|
string1 <= string2
|
string1 > string2
|
string1 >= string2
|
(test_condition)
|
истинно, если test_condition истинно
|
!test_condition
|
истинно, если test_condition ложно;
|
test_condition1 && test_condition2
|
истинно, если как test_condition1, так и test_condition2 истинны;
|
test_condition1 || test_condition2
|
истинно, если хотя бы test_condition1 или test_condition2 истинно.
|
"=" и "!=" имеют больший приоритет, чем "&&" и "||", а "!" имеет наивысший приоритет.
Все, что не распознается, как переменная, считается строкой. Если строка имеет
пробелы или символы табуляции, то ее надо заключать в кавычки.
|