Серверные включения SSI (часть 1)

С точки зрения непрофессиональнала серверные включения, SSI (Server Side Includes)- это специальные заполнители в HTML-документе, которые сервер будет заменять реальными данными непосредственно перед отправкой на браузер окончательного документа. К тому времени, как документ попадает на браузер, он ничем не отличается от других страниц, как будто данные в HTML-код вставлены вручную.
SSI позволяет создавать структуры для страниц, которые будут динамически генерироваться сервером. Для web-авторов он может оказаться мощным средсвом управления разработкой сайта и повышения его эффективности. Примеры использования SSI:

* размещение неоднократно используемых элементов. Если имееется элемент, который появляется на каждой странице вашего сайта, например, сложный навигационный заголовок, вы можете разместить в исходном тексте единственную SSI-команду, которая просто будет копировать его.
* размещение одной строкой элемента, который постоянно изменяется. Например, если вы поддерживаете домашнюю страницу, на которой имеется ежедневно меняемой сообщение, используйте команду SSI (и сценарий на сервере) ля автоматического замещения сообщения.
* вывод даты и времени последнего обновления.
* размешение многочисленным пользователям предостовлять содержимое для включения его в web-страницу без предоставления им доступа к исходному HTML-коду. Например, возможность передачи еженедельных обновлений по электронной почте. Сервер может запустить сценарий, который преобразует сообщение в текстовый файл и затем командой SSI вставит его на web-страницу.
* SSI может обслуживать web-страницу, осуществляющую запрос с браузера. Даже можно обслуживать документы на базе имени домена пользователя.

Ниже приведен список основных серверных включений (SSI) и их атрибутов:

CONFIG
 ERRMSG - задает по умолчанию сообщение, которое передается при обнаружении ошибки во время синтаксического анализа документа.
 <!-- #config errmsg = " Error: file not found " -->

 SIZEFMT - устанавливает формат, используемый при отображении размера файла. Допустимы значения - bytes или abbrev, которое округляет размер до ближайшего килобайта.
 <!-- #config sizefmt = " abbrev " -->

 TIMEFMT - устанавливает формат для времени и даты. Подробнее об этом я расскажу ниже.
 <!-- #config timefmt = " %A, %B, %e, %Y " -->
 

 ECHO

 VAR - значением является имя переменной, которую надо напечатать.
 <!-- #echo var = " DATE_GMT " --> 
 

 EXEC

 CGI - указывает относительный URL-путь к сценарию CGI:
 You are visitor number <!-- #exec cgi = " /cgi-bin/counter.pl " -->

 CMD - задает любую команду на сервере. Переменные SSI доступны этой команде.
 <!-- #exec cmd = " bin/finger $REMOTE_USER@$REMOTE_HOST " --> 
 

 FSIZE

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

 VIRTUAL - задает путь url относительно текущего анализируемого документа. Если он не начинается со слэша (/), то считается относящимся к текущему документу.
 The size of this file is <!-- #fsize file = " somefile.html " --> 
 

 FLASTMODE
 FILE - задает месторасположение файла в виде пути, относительно каталога, в котором находится анализируемый документ.

 VIRTUAL - задает путь url относительно текущего анализируемого документа. URL не может содержать схему или имя хоста, только путь. Если он не начинается со слэша (/), то считается относящимся к текущему документу.
 This file was last modified on <!-- #flastmode virtual = " /mydocs/somefile.html " -->
 

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

 VIRTUAL - задает путь url относительно анализируемого документа. URL не должен содержать схему или имя хоста. Если он не начинается со слэша (/), то считается относящимся к текущему документу.
 <!-- #include virtual = " somefile.html " -->

 
 

 PRINTENV
 PRINTENV - используется только Apache версии 1.2 и выше. Элемент распечатывает список всех существующих переменных и их значения.
 <!-- #ptintenv -->

 
 

 SET
 VAR - имя устанавливаемой переменной.
 VALUE - значение, присваиваемое переменной.
 <!-- #set var = " password " value = " mustard " -->