Включает серверную часть (SSI ) является простой интерпретируемый язык сценариев на стороне сервера, используемый почти исключительно для World Wide Web. Это наиболее полезно для включения содержимого одного или нескольких файлов на веб-страницу на веб-сервере с помощью его директивы #include
. Обычно это может быть общий фрагмент кода на всем сайте, такой как заголовок страницы, нижний колонтитул страницы и меню навигации. SSI также содержит управляющие директивы для условных функций и директивы для вызова внешних программ. Он поддерживается Apache, LiteSpeed , nginx, IIS, а также Jigsaw W3C. Он имеет свои корни в NCSA HTTPd.
. Чтобы веб-сервер мог распознать файл HTML с поддержкой SSI и, следовательно, выполнить эти инструкции, либо имя файла должно заканчиваться специальным расширение, по умолчанию .shtml
, .stm
, .shtm
, или, если сервер настроен таким образом, установите бит выполнения файла.
Как простой язык программирования, SSI поддерживает только один тип : текст. Его поток управления довольно прост, поддерживается выбор, но циклы изначально не поддерживаются и могут быть выполнены только путем рекурсии с использованием включения или использования перенаправления HTTP. Простой дизайн языка упрощает его изучение и использование, чем большинство языков сценариев на стороне сервера, в то время как сложная обработка на стороне сервера часто выполняется с помощью одного из наиболее многофункциональных языков программирования. SSI - это полный по Тьюрингу.
SSI имеет простой синтаксис: . Директивы помещаются в комментарии HTML, поэтому, если SSI не включен, пользователи не увидят директивы SSI на странице, если они не посмотрят на его источник. Обратите внимание, что синтаксис не допускает пробелов между ведущим «<" and the directive. Apache tutorial on SSI stipulates the format requires a space character before the "-->», закрывающим элемент.
Веб-страница, содержащая ежедневную цитату, может включать цитату, поместив следующий код в файл веб-страницы:
После одного изменения файла quote.txt
на всех страницах, содержащих этот файл, будет отображаться последняя ежедневная цитата. Включение не ограничивается файлами и также может быть текстом, выводимым программой, или значением системной переменной, например, текущим временем.
Ниже приведены директивы SSI времен NCSA HTTPd (1990-е годы). Они поддерживаются всеми реализациями.
Директива | Параметры | Описание | Пример |
---|---|---|---|
включает | файл или виртуальный | Это, вероятно, наиболее часто используемая директива SSI, позволяющая включать содержимое одного документа в другой. Файл или виртуальные параметры определяют файл (HTML страницу, текстовый файл, сценарий и т. Д.), Который нужно включить. Включает содержимое другого файла или результат выполнения сценария CGI. Если у процесса нет доступа для чтения файла или выполнения сценария, включение завершится ошибкой. "virtual" указывает цель относительно корня домена, а "file" указывает путь относительно каталога текущего файла. При использовании «файла» запрещено ссылаться на абсолютные пути. Каталоги более высокого уровня (..) обычно запрещены, если явно не настроены. В документации Apache рекомендуется использовать «виртуальный» вместо «файл». | |
exec | cgi или cmd | Эта директива выполняет программу, сценарий или команду оболочки на сервере. Параметр cmd указывает команду на стороне сервера; параметр cgi указывает путь к сценарию CGI. PATH_INFO и QUERY_STRING текущего сценария SSI будут переданы сценарию CGI, в результате следует использовать "exec cgi" вместо "include virtual". | |
echo | var | Эта директива отображает содержимое указанной переменной среды HTTP . Переменные включают HTTP_USER_AGENT, LAST_MODIFIED и HTTP_ACCEPT. | Ваш IP-адрес: |
config | timefmt, sizefmt или errmsg | Эта директива настраивает форматы отображения даты, времени, размера файла и сообщения об ошибке (возвращается, когда команда SSI не удается). | |
flastmod и fsize | файл или виртуальный | Эти директивы отображают дату последнего изменения указанного документа или размер указанного документа. Файл или виртуальные параметры определяют используемый документ. Параметр file определяет документ относительно пути к документу; виртуальный параметр определяет документ относительно корня документа. |
Управляющие директивы позже добавляются в SSI. Они включают в себя повсеместное управление потоком if-elif-else-endif и запись переменных, а также более экзотические функции, такие как циклы, которые встречаются только в некоторых реализациях.
Директива | Параметры | Описание | Пример | Найдено в |
---|---|---|---|---|
| expr | Оператор if. Используется для тестов условий, которые могут определять и генерировать несколько логических страниц из одной физической страницы. elif - это сокращение от вложенного else-if. else и endif не принимают параметры. Синтаксис выражения зависит от реализации. Обычно поддерживаются проверки наличия переменных и проверки на равенство / регулярное выражение. Вместо этого Jigsaw использует выражения, разделенные на несколько атрибутов. | Вездесущий. | |
set | var, value | Устанавливает значение переменной SSI. Apache предоставляет дополнительные параметры для кодировок. | Apache, Nginx | |
printenv | Эта директива выводит список всех переменных SSI и их значений, включая переменные среды и пользовательские переменные. У него нет атрибутов. | Apache |