Server Side includes ( SSI ) — это простой интерпретируемый серверный язык сценариев, используемый почти исключительно для World Wide Web . Он наиболее полезен для включения содержимого одного или нескольких файлов в веб-страницу на веб-сервере (см. ниже) с помощью его #include
директивы. Обычно это может быть общий фрагмент кода на всем сайте, такой как верхний колонтитул страницы, нижний колонтитул страницы и навигационное меню. SSI также содержит управляющие директивы для условных функций и директивы для вызова внешних программ. Он поддерживается Apache , LiteSpeed , nginx , IIS , а также Jigsaw W3C . [1] Он берет свое начало в NCSA HTTPd . [2]
Для того чтобы веб-сервер распознал HTML- файл с поддержкой SSI и, следовательно, выполнил эти инструкции, либо имя файла должно заканчиваться специальным расширением , по умолчанию .shtml
, .stm
, .shtm
, либо, если сервер настроен на это, установить бит выполнения файла. [3]
Как простой язык программирования, SSI поддерживает только один тип : текст. Его поток управления довольно прост, поддерживается выбор, но циклы изначально не поддерживаются и могут быть выполнены только рекурсией с использованием include или HTTP redirect . [a] Простая конструкция языка делает его более простым в изучении и использовании, чем большинство серверных скриптовых языков, в то время как сложная серверная обработка часто выполняется с помощью одного из более многофункциональных языков программирования . SSI является полным по Тьюрингу . [4]
SSI имеет простой синтаксис: <!--#directive parameter=value parameter=value -->
. Директивы размещаются в комментариях HTML, так что если SSI не включен, пользователи не увидят директивы SSI на странице, если только не посмотрят на ее источник. Обратите внимание, что синтаксис не допускает пробелов между ведущим "<!--" и директивой. В руководстве Apache по SSI указано, что формат требует символа пробела перед "-->", который закрывает элемент. [5]
Веб-страница, содержащая ежедневную котировку, может включать цитату, помещая следующий код в файл веб-страницы:
<!--#include virtual="../quote.txt" -->
При одном изменении файла quote.txt
все страницы, которые включают файл, будут отображать последнюю ежедневную котировку. Включение не ограничивается файлами и может также быть текстовым выводом из программы или значением системной переменной, например, текущим временем.
Ниже приведены директивы SSI времен NCSA HTTPd (1990-е годы). [2] Некоторые реализации поддерживают не все из них. [6]
Директивы управления были добавлены в SSI позже. Они включают в себя вездесущий if-elif-else-endif контроль потока и запись переменных, а также более экзотические функции, такие как циклы, которые встречаются только в некоторых реализациях.