Поставить закладку   сделать стартовой   Написать нам

Server Side Includes (SSI)

  • Что такое SSI.

    SSI-набор команд web-сервера, позволяющий создавать HTML-документы прямо на сервере без применения CGI-скриптов.
    Еще SSI-команды позволяют запускать программы на сервере, выводить в HTML страничку значения переменных окружения и вести статистику по дате изменения и размерам файлов.
    Технология SSI разработана фирмой Questar Microsystems. Эту технологию поддерживают такие web-серверы как Apache, Netscape, Spry Web и Microsoft Internet Information Server (MS IIS).

  • Настройка Apache.

    Для того, чтобы сервер Apache проверял файлы на наличие SSI-команд, следует указать в его настройках расширение файлов, содержащих SSI-команды. Это делается в файле httpd.conf, раскомментированием следующих строк:
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    Для того, чтобы сервер проверял все HTML-документы на наличие SSI-команд, изменим вторую строку на:
    AddHandler server-parsed .shtml .shtm .sht .html .htm

    Теперь разрешим серверу выполнение SSI команд в каталоге вашей страницы.Это делается в блоке операторов, начинающемся строкой:
    <Directory /> и заканчивающемся строкой </Directory>

    <Directory />
    Options Indexes Includes
    AllowOverride All
    </Directory>

    Изменяем строку Options Indexes на Options Indexes Includes

  • Команды SSI.

    Команды SSI встраиваются в HTML-документ в виде комментариев, например:
    <!--#include file="menu.htm"-->
    Если в сервере отключено выполнение SSI, он отправит браузеру пользователя файл в том виде, в каком он лежит на сервере, а браузер просто проигнорирует закомментированные SSI-команды.

    • #include file
      Включает в HTML-документ содержимое указанного файла, находящегося в том же каталоге.
      В документ можно вставлять файлы, содержащие команды SSI.
      пример:
      <!--#include file="menu.htm"-->
      В место, где расположена команда, будет встроено содержимое файла menu.htm находящегося в том же каталоге.

    • #include virtual
      Включает в HTML-документ содержимое указанного файла, с указанием пути относительно текущего каталога.
      пример:
      <!--#include virtual="/price/price.txt"-->
      В место, где расположена команда, будет встроено содержимое файла price.txt находящегося в каталоге /price.
      <!--#include virtual="/cgi-bin/p.pl"-->
      В место, где расположена команда, будет встроен вывод скрипта p.pl

    • #fsize file
      Включает в HTML-документ размер указанного файла.
      пример:
      Размер этого документа:
      <!--#fsize file="ssi.shtml"-->

      выведет:
      Размер этого документа:
      10k

    • #flastmod file
      Включает в HTML-документ время последней модификации указанного файла.
      пример:
      Последний раз изменен:
      <!--#flastmod file="ssi.shtml"-->

      выведет:
      Последний раз изменен:
      Wednesday, 14-Feb-2001 14:38:42 Московское время (зима)

    • #exec cmd
      Запускает внешнюю программу.
      пример:
      Список файлов текущей директории:
      <!--#exec cmd="dir"-->


    • #exec cgi
      Запуск CGI-скрипта и вставка в содержимое страницы его вывода.
      пример:
      <!--#exec cgi="/cgi-bin/p.pl"-->

    • #config errmsg
      Изменение стандартного собщения об ошибке.
      пример:
      <!--#config errmsg="Ошибка при выполнении SSI-команды"-->

    • #config sizefmt
      Изменение формата вывода размера файла.
      пример:
      Вывод размера файла в килобайтах:
      <!--#config sizefmt="abbrev"-->
      <!--#fsize file="ssi.shtml"-->
      Вывод размера файла в байтах:
      <!--#config sizefmt="bytes"-->
      <!--#fsize file="ssi.shtml"-->


    • #config timefmt
      Изменение формата вывода даты и времени.
      пример:
      Последнее изменение документа:
      <!--#config timefmt="%d.%m.%Y %H:%M:%S"-->
      <!--#flastmod file="ssi.shtml"-->

      выведет:
      14.02.2001 14:38:42

    Таблица параметров timefmt:
    Формат Описание Пример
    %a Краткое название дня недели Mon
    %A Полное название дня недели Monday
    %b Краткое название месяца Feb
    %B Полное название месяца February
    %d День месяца 02
    %D Дата в формате "%m/%d/%y" 02/14/01
    %e День месяца 1
    %H Часы в 24-часовом формате 15
    %I Часы в 12-часовом формате 03
    %j Порядковый номер дня года 72
    %m Порядковый номер месяца 02
    %M Минуты 05
    %p AM|PM AM
    %r Время в формате "%I:%M:%S %p" 12:31:23 PM
    %S Секунды 23
    %s Время в секундах с 01.01.1970 765678984
    %T Время в формате "%H:%M:%S" 12:31:23
    %U Порядковый номер недели года 6
    %w Номер дня недели 1
    %y Год в формате ГГ 01
    %Y Год в формате ГГГГ 2001
    %Z Временная зона MSK
    Строка формата по умолчанию: "%A, %d-%b-%Y %H:%M:%S %Z"

    • #printenv
      Вывод всех CGI и SSI переменных окружения.
      Работа с CGI переменными разрешена только если сервер разрешает запуск CGI-скриптов.
      пример:
      <!--#printenv-->

    • #set var
      Устанавливает значение переменной окружения.
      пример:
      Сменим адрес администратора сервера:
      <!--#set var="SERVER_ADMIN" value="valery@ropnet.ru"-->


    • #echo var
      Вывод значения переменной окружения.
      пример:
      <!--#echo var="SERVER_NAME"-->



    • #if/else
      Условное управление выводом.
      Синтаксис команды:
      <!--#if expr="условие1" -->
      команда, которая будет выполняться если условие истинно
      <--#elif expr="условие2" -->
      команда, которая будет выполняться, если условие1 ложно, а условие2 истинно
      <--#else -->
      команда, которая будет выполняться, если все условия ложны
      <--#endif -->

      где условие имеет формат:
      (строка1 оператор сравнения строк строка2)
      Условие может состоять и из одной строки. В этом случае оно является истинным, если строка не пустая.
      Если строка2 заключена в "/", то условие истинно, если в строке1 встретится хоть одно вхождение строки2.
      Для группирования условий используются скобки.
      Операторы сравнения:
      == равно
      != не равно
      < меньше
      > больше
      !< не меньше
      !> не больше
      пример:
      Вы используете браузер:
      <!--#if expr="$HTTP_USER_AGENT=/Nav/" -->
      Netscape Navigator
      <!--#elif expr="$HTTP_USER_AGENT=/MSIE/ || $HTTP_USER_AGENT=/Mozilla/" -->
      Internet Explorer
      <!--#else --> Не определен (<!--#echo var="HTTP_USER_AGENT" -->)
      <!--#endif -->

      выведет тип вашего браузера

    • #break
      Остановка вывода.
    • #email
      Отправляет письмо, содержание которого задано атрибутом message, по адресу, определенному атрибутом toaddress, если данный адрес и host, заданный атрибутом tohost (данный атрибут может отсутствовать), реально существует.
      пример:
      <!--#email tohost="www.greentown.narod.ru" message="Thanks" toaddress="valery@ropnet.ru" subject="SSI"-->
  • Переменные окружения.

    Переменные CGI

    • DOCUMENT_ROOT
    • GATEWAY_INTERFACE
      Имя и версия CGI web-сервера
    • HTTP_ACCEPT
      Разделенный запятыми список MIME-типов, понимаемых браузером клиента
    • HTTP_ACCEPT_ENCODING
    • HTTP_ACCEPT_LANGUAGE
      Список языков, доступных браузеру клиента
    • HTTP_CONNECTION
    • HTTP_HOST
    • HTTP_USER_AGENT
      Имя браузера клиента
    • REMOTE_ADDR
      IP адрес удаленного клиента
    • REMOTE_PORT
    • SCRIPT_FILENAME
    • SCRIPT_NAME
      Имя программы для выполнения в CGI запросе
    • SERVER_ADMIN
      Почтовый адрес администратора web-сервера
    • SERVER_NAME
      Имя компьютера, на котором работает web-сервер
    • SERVER_PORT
      IP порт WWW (HTTP) сервера
    • SERVER_PROTOCOL
      Имя и версия HTTP сервера (name/version)
    • SERVER_SIGNATURE
    • SERVER_SOFTWARE
      Название программы web-сервера
    • QUERY_STRING
      Строка, полученная от клиента
    • REQUEST_METHOD
      Тип метода запроса к серверу
    • REQUEST_URI
    Переменные SSI
    • DATE_GMT
      Текущее время по Гринвичу (GMT, Greenwich Mean Time)
    • DATE_LOCAL
      Местное время и дата
    • DOCUMENT_NAME
      Имя документа, запрошенного клиентом
    • DOCUMENT_URI
      Путь к документу от базовой директории сервера
    • LAST_MODIFIED
      Дата последнего изменения документа





  • HitUA.net
    © Copyright 2005 SysAdmin