Описание тега server-side-includes
Чаще всего SSI используется для включения содержимого одного или нескольких файлов на веб-страницу на веб-сервере. Например, веб-страница, содержащая ежедневную цитату, может включать цитату, поместив следующий код в файл веб-страницы:
<!--#include virtual="../quote.txt" -->
После одного изменения файла quote.txt на всех страницах, включая этот файл, будет отображаться последнее дневное предложение. Включение не ограничивается файлами и также может быть текстом, выводимым программой, или значением системной переменной, например, текущим временем.
Включения на стороне сервера полезны для включения общей части кода по всему сайту, такой как заголовок страницы, нижний колонтитул страницы и меню навигации. Меню условной навигации можно условно включить с помощью управляющих директив.
Чтобы веб-сервер мог распознать HTML-файл с поддержкой SSI и, следовательно, выполнить эти инструкции, либо имя файла должно заканчиваться специальным расширением, по умолчанию.shtml,.stm,.shtm, либо, если сервер настроен на разрешить это, установить бит выполнения файла.
Как простой язык программирования SSI поддерживает только один тип: текст. Его поток управления довольно прост, поддерживается выбор, но циклы изначально не поддерживаются и могут быть выполнены только путем рекурсии с использованием включения или с использованием перенаправления HTTP. Простой дизайн языка облегчает его изучение и использование, чем большинство языков сценариев на стороне сервера, в то время как сложная обработка на стороне сервера часто выполняется с помощью одного из языков программирования с более широким набором функций. SSI завершен по Тьюрингу.
Apache, nginx, lighttpd и IIS - четыре основных веб-сервера, поддерживающих этот язык.
SSI имеет простой синтаксис: <!--#directive parameter=value parameter=value -->
Директивы помещаются в комментарии HTML, поэтому, если SSI не включен, пользователи не увидят директивы SSI на странице, если они не посмотрят на его источник. Обратите внимание, что синтаксис не допускает пробелов между ведущим "<" и директивой.