SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml, .stm или .shtm
Необходимо помнить, что некоторые сервисы не исполняют команды SSI, если расширение файла будет отличным от приведенных выше, например, .html.
Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние CGI-скрипты, реализовывать условные операции (if/else), работать с переменными и т. п. Благодаря крайней простоте языка сборка SSI-страниц происходит очень быстро, однако, многие возможности полноценных языков программирования, например, работа с файлами, в SSI отсутствуют.
Отдельные элементы синтаксиса SSI используются и в других скриптовых языках, например в ASP.
config — контролирует различные аспекты сканирования. Его атрибутами могут быть:
Переменные для sizefmt:
<!--#config sizefmt="abbrev"--> Выводит размер файла в килобайтах: (17k)
<!--#config sizefmt="bytes"--> Выводит размер файла в байтах (17,076)
Переменные для timefmt:
| Формат | Описание | Пример |
|---|---|---|
| %a | Краткое название дня недели | Mon |
| %A | Полное название дня недели | Monday |
| %b | Аббревиатура названия месяца | Dec |
| %B | Полное название месяца | December |
| %d | День месяца | 01 (не 1) |
| %D | Дата в формате "%m/%d/%y" | 12/31/99 |
| %e | День месяца | 13 |
| %H | Часы в 24-часовом формате | 13 |
| %I | Часы в 12-часовом формате | 01 |
| %j | День года | 235 |
| %m | Номер месяца | 01 |
| %M | Минуты | 03 |
| %p | AM/PM (до полудня/после) | AM |
| %r | Время в формате "I:M:S p" | 11:35:46 PM |
| %S | Секунды | 34 |
| %s | Время в секундах с 01.01.1970 | 957228726 |
| %T | Время в формате "%H:%M:%S" | 14:05:34 |
| %U | Неделя года | 16 |
| %w | Номер дня недели | 4 |
| %y | Год в формате ГГ | 99 |
| %Y | Год в формате ГГГГ | 1999 |
| %Z | Временная зона | MSK |
Обратите внимание на то, что команды #config sizefmt и #config timefmt влияют на все связанные с ними SSI-команды от того места, откуда они были вызваны и до самого конца страницы. Поэтому каждый вызов команд #flastmod и #fsize лучше снабжать своей командой #config.
set — устанавливает значение переменной. Её атрибутами являются var, определяющий имя переменной, и value, определяющий её значение.
Подстановка переменных производится внутри заключенных в кавычки строк в большинстве аргументов SSI директив. В этих случаях знак доллара можно вставить, предварив его слешом:
<!--#if expr="$a = \$test" -->
Для предотвращения двусмысленности можно заключать имя переменной в фигурные скобки:
<!--#set var="Zed" value="${a}bc_${abc}" -->
В результате такого присвоения переменная Zed будет иметь значение «Xbc_Y», если переменная a равна X, а переменная abc равна Y.
printenv — Выводит список так называемых «переменных окружения» с их значениями. Вызывается без параметров.
Переменные окружения:
echo — выводит значение установленной переменной SSI. Допустимые атрибуты:
flastmod — выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.
fsize — выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:
include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:
Базовыми элементами контроля являются:
<!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif -->
Элементы elif и else являются необязательными.
Элемент endif заканчивает элемент if и является обязательным.
test_condition может быть одним из следующих:
Если string2 имеет форму /string/, то тогда она интерпретируется, как регулярное выражение. Их синтаксис аналогичен синтаксису регулярных выражений в Unix команде egrep;(см. Регулярные выражения)
(test_condition) — истинно, если test_condition истинно;
! test_condition — истинно, если test_condition ложно;
test_condition1 && test_condition2 — истинно, если как test_condition1, так и test_condition2 истинны;
test_condition1 || test_condition2 — истинно, если хотя бы test_condition1 или test_condition2 истинно.
«=" и "!=" имеют больший приоритет, чем "&&» и «||», а «!» имеет наивысший приоритет.
Все, что не распознается, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то её надо заключать в кавычки.
О чём стоит помнить, так это о том, что лучше не использовать SSI-команды при создании страниц в редакторах типа Front Page — они их обычно не понимают и выкидывают, и о том, что одну SSI-команду нельзя вызвать из другой (как нельзя вызвать SSI-команду из скрипта, и скрипт из скрипта).
<!--#config errmsg="[При открытии страницы произошла ошибка. Пожалуйста, сообщите об этом владельцу сайта.]" -->
<!--#config timefmt="%d/%m/%y" --> Выведет: 03/07/06 <!--#config timefmt="%d/%m/%Y, %H:%M:%S" --> Выведет: 03/07/2006, 20:16:33
http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> Выведет: http://ru.wikipedia.org/w/index.php?title=SSI_(программирование)
<!--#flastmod file="file.html"-->
<!--#include file="footer.html"--> <!--#include virtual="header.asp"--> <!--#include virtual="/right.links.txt"-->
<!--#if expr="test_condition"--> <!--#elif expr="test_condition"--> <!--#else--> <!--#endif-->
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .