SSI — Включение кода на стороне сервера. Server-Side Includes


Содержание

«Server S >

Это сделает ваши страницы живыми. Это поможет легко обновлять ваши сайты. CGI-скрипты смогут вставлять HTML-код на страницы сайта. Все это может стать реальностью с применением «Server Side Includes, так же известных как SSI.

«Includes» (англ. «включать») означает, что SSI добавляет что-то на ваши страницы.

«Server Side» означает то, что SSI обслуживаются сервером, а не браузером. В то время как сервер посылает вашу страницу в браузер посетителя, он сканирует страницу, ища специальные теги, которые сообщают о том, что надо включать вместо них. Когда он находит такие теги, он включает блоки кода вместо этого тега и отсылает результат.

Где Вы бы не использовали один и тот же код на страницах сайта (такой как панели навигации, формы подписки и т.д.), используйте SSI и Вам придется поменять только один файл, чтобы внести изменения на все страницы, где используется SSI.

Это просто!

Но если это так просто, то почему не каждый использует SSI? Ответов два: 1) эта процедура занимает несколько наносекунд у Вашего сервера на сканирование и добавление; 2) не каждый знает о том как использовать SSI.

Большинство хостинговых компаний позволяет использовать SSI. Обычным требованием в таком случае является расширение .shtml для таких страниц. Это вызвано тем, что использование SSI занимает часть ресурсов сервера и определенный период времени. Таким образом Вы будете использовать .shtml расширение для SSI-страниц и расширения .html and .htm для всех остальных.

Если Вы не знаете поддерживает ли сервер SSI, проделайте простой тест.

Создайте 2 файла. Назовите первый mytest.shtml а второй — myssi.txt

Текст файла mytest.shtml:

Текст файла myssi.txt:

Загрузите эти два файла на сервер и посмотрите файл mytest.shtml в браузере. Если Вы видите фразу «It goes here. Here I am!», то это значит, что сервер поддерживает SSI.

Заметьте, что теги SSI находятся внутри тегов комментария. Некоторые серверы будут работать нормально если есть пробел после . Но некоторые серверы будут давать ошибку. Пример:

возможно будет работать на некоторых серверах, но не на всех. Чтобы быть уверенным в работоспособности SSI пишите так:

А теперь мы покажем примеры того, как правильно использовать SSI:

Замените подчеркивание на имя файла который Вы хотите включить на страницу. Имя файла может быть любым (обычно расширения таких файлов .txt .html), но это должен быть текст. Это может быть простой текст, код HTML, JavaScript, и т.п. Однако нельзя использовать графические и звуковые файлы.

Файл который Вы включаете может иметь HTML код для графики и звука, но вы не можете вставлять их напрямую. Файл должен находится в той же директории что и .shtml страница.

(2) Тег:

Тоже самое что и file=»__________» за исключением того что файл может находится в другой директории.

(3) Тег:

Замените подчеркивание на имя CGI-скрипта. Имя файла может быть любым, но не допускается наличие адреса http://. . CGI-скрипт должен возвращать текст, но этот тектс может быть JavaScript или HTML-код для графики и звука или другого кода, который обрабатывается браузером

Используя эти 3 простых тега у Вас будет один кусок кода который будет включен на все страницы вашего сайта.

Так же вы можете добавлять результаты работы CGI-скриптов, включая счетчики, баннеры, новости и погоду с других сайтов и многое другое, что умеют делать CGI-скрипты.

Вот еще один пример:

Вся эта конструкция займет несколько секунд на загрузку, но это всего лишь демонстрация свободы творчеcтва при использовании SSI.

Web-технологии

Максим Александрович Викулин

Лекция 5

SSI (Server-Side Includes) — включения на стороне сервера

SSI (Server Side Includes — включения на стороне сервера) — простейший язык программирования для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа.

Для использования инструкций файл должен оканчиваться расширением .shtml или .shtm.

Пример: содержимое файла index.shtml

Пример: содержимое файла content.html

Пример: результат работы

Возможные ошибки

Директивы SSI

SSI поддерживает несколько команд называемых директивы, предназначенных для разных целей и расширяющих возможности по модификации веб-страниц.

Все директивы записываются в следующем виде:

Директива include

Директива include вставляет содержимое другого файла в текущий документ. Файл обязательно должен быть доступен, иначе он не будет показан. У директивы include имеется два параметра: file и virtual.

Параметр file Указывает путь к файлу относительно текущего документа. Можно использовать как текстовые файлы, так и HTML-документы, а также включать другие SSI-файлы (обычно с расширением .shtml). Синтаксис использования следующий: . Параметр virtual Задает виртуальный путь к документу на сервере. Синтаксис следующий:
. Параметр virtual задаёт путь от корня сайта, в то время как параметр file задаёт путь относительно текущего документа.

Пример

Директива echo

Директива echo предназначена для вывода значений переменных и даты, формат которой определяется параметром timefmt директивы config. У echo есть два параметра:

  • var — обязательный параметр, определяет выводимое значение;
  • encoding — необязательный параметр, отвечает за перекодировку выводимых данных. Если указан параметр encoding, то он должен предшествовать параметру var. Значения:
    • entity (по умолчанию);
    • url;
    • none.

Пример

Директива config. Параметр timefmt

Директива config позволяет управлять некоторыми опциями SSI, такими как настройка формата вывода даты, времени, размера файла и установка текста сообщения об ошибке.

Параметр timefmt устанавливает формат даты и времени.

Форматы даты и времени

Для контроля выводимой информации могут применяться следующие шаблоны:

  • %a — сокращенное название дня недели;
  • %A — полное название дня недели;
  • %b — сокращенное название месяца;
  • %B — полное название месяца;
  • %c — формат даты и времени по умолчанию;
  • %d — день месяца (от 01 до 31);
  • %D — дата в формате мм/дд/гг;
  • %e — день месяца без ведущего нуля (от 1 до 31);
  • %H — часы в 24-часовом формате (от 00 до 23);
  • %I — часы в 12-часовом формате (от 00 до 12);
  • %j — день года (от 001 до 366);

Форматы даты и времени

Для контроля выводимой информации могут применяться следующие шаблоны:

  • %m — номер месяца (от 01 до 12);
  • %M — минуты (от 00 до 60);
  • %p — выводит AM или PM в зависимости от времени и заданного формата;
  • %r — время с автоматическим добавлением AM или PM;
  • %T — время в формате чч:мм:сс;
  • %y — год (от 00 до 99);
  • %% — вывод символа %.

Разрешается совмещать между собой любые шаблоны, а также писать дополнительные символы.

Директива printenv

Выводит все переменные окружения. Параметров не имеет.

Директива set

Устанавливает значение переменной. С помощью данной директивы можно создать новую переменную или изменить значение переменной окружения. Параметрами являются var, определяющий имя переменной, и value, определяющий ее значение.

Условные операторы

Условия: A, A = B, A != B, A B, A >= B
A

SSI — Включение кода на стороне сервера. Server-Side Includes

А! Так Вы даже и не знаете, что это такое? И, тем более, не понимаете, зачем он Вам нужен? Что же, значит, Вы пришли, куда надо. Сегодня здесь всем объясняют — зачем им нужен SSI :-)

Как все нормальные люди, вначале расшифруем аббревиатуру SSI — Server S >SSI — это директивы, вставляемые прямо в HTML-код и служащие для передачи указаний Wев-серверу. Встречая такие директивы, которые, кстати, называются SSI-вставками, Web-сервер интерпретирует их и выполняет соответствующие действия. Какие, спросите Вы? А вот, например: вставка HTML-фрагмента из другого файла, динамическое формирование страничек в зависимости от некоторых переменных (например, типа броузера) и другие не менее приятные вещи.

Преимущества SSI проявляются, когда нам нужно поддерживать достаточно большой по объему сайт, имеющий определенную структуру и повторяющиеся элементы кода на всех страничках. Вообще, при применении серверных включений сайт удобно рассматривать как состоящий из отдельных блоков, каждый из которых отвечает за свою часть странички. Эти блоки практически неизменны и повторяются от страницы к странице. В эти блоки можно вынести такие элементы странички как: главное меню, рекламные вставки, повторяющиеся элементы оформления страничек и т.д. Физически эти блоки представляют собой просто HTML-файлы, содержащие часть кода, нужную для выполнения их задачи.

Для того, чтобы сервер знал, что страничка не обычная, а содержит SSI-директивы, она имеет специальное расширение: *.shtml или *.shtm, наличие которого и заставляет web-сервер предварительно обрабатывать странички. Вообще-то, расширение может быть любое — в зависимости от конфигурации web-сервера, но в основном применяется именно *.shtml.

Полная страничка формируется web-сервером на лету, собирая код странички из таких вот блоков. Для того, чтобы указать серверу, какой блок нужно вставить и в каком месте странички, используется специальная форма записи в виде комментария. Вот такая:

SSI-команд насчитывается около десятка, но я расскажу только о самых употребимых. Самая популярная команда — это команда включения содержимого одного файла в другой:

Результатом ее выполнения будет вставка содержимого файла file.ssi в месте появления данной директивы. При просмотре сформированного исходника HTML-файла мы не увидим никаких признаков SSI, т.к. данный механизм действует абсолютно прозрачно для броузеров, они получают исключительно корректный HTML-код.

Следующая команда — это команда установки значения переменной:

В данном случае мы определили переменную с именем pic и присвоили ей строковое значение «picture.gif». Значение переменной pic теперь доступно внутри SSI-вставки, и мы можем его использовать по нашему усмотрению. Например, используя одну и ту же SSI-вставку, но с разными значениями определенной в ней переменной, мы получим различные результаты. Перед тем, как показать реальный пример использования переменных в SSI-включениях, я расскажу о некоторых командах, применяемых при работе с переменными. Во-первых, это команда печати значения переменной:

Ее выполнение приведет к тому, что в месте появления команды напечатается значение переменной pic, т.е. «picture.gif».

Переменная может участвовать в выражениях, в этом случае перед ней ставится знак ‘$’, показывающий, что это именно переменная, а не просто текст. Вот пример:

После такого присвоения переменная B будет содержать строку «123456». Если же в текст понадобится просто вставить знак ‘$’ или какой-нибудь из других специальных знаков, то его нужно предварить слешем, вот так: ‘\$’. В некоторых случаях для избежания двусмысленности значение переменной может быть заключено в фигурные скобки: «$».

Более сложное применение переменных возможно с использованием условных операторов, имеющих следующую форму написания:

В зависимости от результатов проверки мы можем подставить тот или иной фрагмент кода. Допустим, мы можем проанализировать тип броузера пользователя и в зависимости от этого выдать либо код для Netscape Navigator-а, либо Internet Explorer-а. Это может оказаться полезным в некоторых случаях, когда невозможно сделать страничку, которая корректно отображалась бы в обоих броузерах. Вот пример использования условного оператора:

В данном случае условием проверки является существование переменной $Monday и, в зависимости от этого, подстановка того или иного HTML-кода.

Теперь давайте рассмотрим реальный пример применения SSI для формирования сложного документа из нескольких SSI-вставок. Вначале напишем текст основного HTML-документа, полагая, что SSI-вставки находятся в каталоге /ssi:

index.shtml

Теперь напишем код для этих SSI-вставок:

_header.shtml

Как видите, основной документ предельно упрощен и состоит из директив, устанавливающих значения переменных title, keywords и description, которые и будут подставлены в код странички при обработке SSI-вставок, определяющих код для верхней и нижней частей странички. Реальный код SSI-вставок обычно гораздо сложнее и может включать в себя большее количество определяемых переменных и сложных условий, формирующих окончательный вид странички.

Первое преимущество SSI с точки зрения дизайнера заключается в том, что при таком подходе web-мастеру, занимающимуся поддержкой сайта, можно не бояться случайно испортить дизайн. Элементы сложной верстки скрыты за счет использования SSI, и поддержка содержимого страничек становится гораздо более легким и приятным делом.

Второе, не менее важное преимущество, — это возможность мгновенной замены дизайна сайта, не требующая переделывания страничек с информационным содержанием сайта. Для смены дизайна достаточно переписать SSI-вставки, формирующие внешний вид сайта. В нашем случае это файлы _header.shtml и _footer.shtml.

Вот, вкратце то, что можно рассказать о SSI. Если Вас это заинтересовало, то возможно Вам будет интересно прочитать статью на сайте web-клуба, где об этом написано более подробно и приведен полный список SSI-директив с примерами.

zoonman ·ru ПроектыСтатьи и заметки

Как это включается.

Чтобы включить этот модуль, в конфигурационный файл httpd.conf Apache нужно включить указание обработки файлов сервером:

Как правило, а может это так и есть, данный файл расположен по адресу /etc/httpd/httpd.conf если вы работаете под Linux или путь_к_серверу/conf/httpd.conf под Windows. Но помните, из правил бывают и исключения.

Отмечу такую особенность, что на модуль mod_include еще ссылаются mod_cgi, mod_expires.

Еще желательно добавить указание разрешения обрабатывать файлы в директории по умолчанию.


Можно слегка защититься указав директиву IncludesNOEXEC:

Если вы хотите использовать файл .htaccess для включения парсинга, то в нем нужно указать:

И не забыть про разрешение обрабатывать файл .htaccess:

Есть еще один оригинальный метод включения SSI обработки — это директива XBitHack, установка её в on приводит к тому, что все файлы имеющие флаг «выполняемый», будут обрабатываться:

Для присвоения такого флага для файлов нужно дать команду (при работе в Unix-системах)

Известно, что в конфигурации по умолчанию Apache отдает SSI страницу без даты ее последней модификации, потому что расчет её достаточно сложен. Естественно это приводит к некэшируемости страницы и, за счет этого, увеличению расходов по передаче трафика. Проблема кэширования страниц стоит уже давно, тут надо строго определиться, нужно ли вам её кэшировать или нет. Если на странице представлена динамичная информация, то кэшировать не стоит, иначе придется призадуматься. Пока вы ломаете голову, я вернусь к решению проблемы. Тут есть два пути:

  1. Использовать XBitHack Full запись в конфигурации. Это приведет к тому, что дата последней модификации будет установлена по дате запрашиваемого файла. Например, ежели запрошен файл projects.shtml , а он включает в себя cms.shtml и profiler.shtml , то дата будет отправлена по файлу projects.shtml .
  2. Использовать директивы модуля mod_expires, которые указывают браузеру и прокси-серверам возможность кэширования страницы.

В Apache 2.x появилась возможность применения фильтров:

Все начинается с элементарных конструкций, называемых директивами. Общий вид:

Внешне это выглядит как обычный HTML комментарий, поэтому если ваш сервер не обрабатыет SSI-страницы, то в браузер не выводится никаких ошибок, по крайней мере их просто не видно, но в коде страницы они все равно присутствуют. В случае, когда SSI уже работает, директивы заменяются результами.

element — элемент, команда указывающая на действие

attribute — атрибут команды

value — значение атрибута

Значение атрибута часто бывает заключено в двойные кавычки. Многие команды разрешают только одну пару атрибут=»значение» . Существует замечание относительно окончания команды « , оно должно обязательно отделяться пробелом от выражения, иначе может быть воспринято как часть выражения или, к примеру, значения атрибута.

Рассмотрим базовые директивы:

Такая конструкция позволяет просто включить файл my_included_file.inc не производя над ним никаких действий. В качестве такого файла может быть статичная веб-страница.

Значение атрибута file — это путь относительно директории, содержащей вызываемый документ. Он не может содержать ../ или абсолютный путь, то есть находящейся в той же папке, что и вызывающий файл.

Server Side Includes

SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml, .stm или .shtm

Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние CGI-скрипты, реализовывать условные операции (if/else), работать с переменными и т.п. Благодаря крайней простоте языка, сборка SSI-страниц происходит очень быстро, однако многие возможности полноценных языков программирования, например, работа с файлами, в SSI отсутствуют.

При создании сайта многие Вебмастера испытывают сложности с его оформлением, особенно это проявляется в первые этапы разработки. Приходится всё время что-то менять, исправлять и убирать. С одной страницей это легко, но , что делать когда у Вас более 10 страниц. Возьмём к примеру такую ситуацию. У Вас 100 страниц сайта и Вам вдруг неожиданно потребовалось в верхней части каждой страницы поместить какой-то элемент (баннер, ссылка и т.д.) Исправлять 100 страниц очень и очень туго, да и стоит ли. Даже при помощи всяких программ-заменителей это не просто сделать, особенно когда менять не одну строчку, а несколько. Как решить эту проблему?

Решается эта проблема при помощи SSI (Server Side Include). С помощью этой технологии можно собирать страницы по кускам на лету. Технология очень проста — при запросе клиента сервер проверяет документ на наличие специальных команд и выполняет их, если находит. Вот пример, нам надо собрать страницу из двух частей (logo.html и inform1.html). Первая часть сверху — общая часть (логотип, меню и т.д.), вторая часть — сама информационная страничка. Тогда на информационной страничке мы ставим следующую строчку-команду SSI:

— путь к файлу logo.html указывается от текущего файла inform1.html.

Предполагаем, что файл logo.html лежит на сайте в каталоге SSI. Таким образом при запросе на такой файл, сервер выполнит команду INCLUDE и вместо этой команды выдаст содержимое файла logo.html. Для всех предполагаемых страниц сайта можно написать эту команду, тогда при загрузке они будут показывать верхнюю общую часть и своё соджержание, естественно. Что это даёт? Теперь достаточно изменять файл logo.html, чтобы изменились все 100 страниц сайта. Причём, меняются не сами страницы, а только этот один файл. Остальные же просто при загрузке выводят его содержимое, которое легко менять. Так к примеру можно оформлять в едином стиле весь свой сайт, можно легко менять его дизайн и вид, задавая параметры в общем файле logo.html.

При использовании технологии SSI важно учитывать тот факт, что сервер должен поддерживать для проверки на команды SSI данные расширения файлов. Перед отправкой обычных документов сервер не проверяет их на команды SSI и поэтому работает быстрее, а если он каждый раз проверяет все файлы сайта на SSI, работы сервера замедляется. Чтобы этого избежать многие серверы обрабатывают на SSI только файлы определённого типа (Например *.shtm *.shtml и т.д.) Остальные же файлы не просматриваются на такие команды, а отправляются клиенту сразу. Поэтому не удивляйтесь, если Ваши команды SSI не сработали, вероятно сервер просто не настроен их проверять. В итоге Вы не увидите ничего, хотя сервер выдаст команду клиенту, браузер никак на неё не отреагирует (для него это обычная ремарка). Важно знать какие типы файлов сервер проверяет на команды SSI. Например, сервер http://webservis.ru проверяет и файлы *.html Это конечно хорошо и удобно для самих вебмастеров, но нагрузка на сервер выше.

При создании общего стиля использование SSI просто необходимо, так как нужно использовать общую шапку. Многие сайты используют общие и шапку и низ документа. Это позволяет делать практически идентичные по дизайну страницы. Менять общий стиль очень легко. Когда создаёте сайт с большим количеством страниц, всегда используйте SSI.

С точки зрения непрофессиональнала серверные включения, SSI (Server Side Includes)- это специальные заполнители в HTML-документе, которые сервер будет заменять реальными данными непосредственно перед отправкой на браузер окончательного документа. К тому времени, как документ попадает на браузер, он ничем не отличается от других страниц, как будто данные в HTML-код вставлены вручную.
SSI позволяет создавать структуры для страниц, которые будут динамически генерироваться сервером. Для web-авторов он может оказаться мощным средсвом управления разработкой сайта и повышения его эффективности. Примеры использования SSI:

  • размещение неоднократно используемых элементов. Если имееется элемент, который появляется на каждой странице вашего сайта, например, сложный навигационный заголовок, вы можете разместить в исходном тексте единственную SSI-команду, которая просто будет копировать его.
  • размещение одной строкой элемента, который постоянно изменяется. Например, если вы поддерживаете домашнюю страницу, на которой имеется ежедневно меняемой сообщение, используйте команду SSI (и сценарий на сервере) ля автоматического замещения сообщения.
  • вывод даты и времени последнего обновления.
  • размешение многочисленным пользователям предостовлять содержимое для включения его в web-страницу без предоставления им доступа к исходному HTML-коду. Например, возможность передачи еженедельных обновлений по электронной почте. Сервер может запустить сценарий, который преобразует сообщение в текстовый файл и затем командой SSI вставит его на web-страницу.
  • SSI может обслуживать web-страницу, осуществляющую запрос с браузера. Даже можно обслуживать документы на базе имени домена пользователя.

SSI — это директивы, вставляемые прямо в HTML-код и служащие для передачи указаний Wев-серверу. Встречая такие директивы, которые, кстати, называются SSI-вставками, Web-сервер интерпретирует их и выполняет соответствующие действия. Какие, спросите Вы? А вот, например: вставка HTML-фрагмента из другого файла, динамическое формирование страничек в зависимости от некоторых переменных (например, типа броузера) и другие не менее приятные вещи.

Преимущества SSI проявляются, когда нам нужно поддерживать достаточно большой по объему сайт, имеющий определенную структуру и повторяющиеся элементы кода на всех страничках. Вообще, при применении серверных включений сайт удобно рассматривать как состоящий из отдельных блоков, каждый из которых отвечает за свою часть странички. Эти блоки практически неизменны и повторяются от страницы к странице. В эти блоки можно вынести такие элементы странички как: главное меню, рекламные вставки, повторяющиеся элементы оформления страничек и т.д. Физически эти блоки представляют собой просто HTML-файлы, содержащие часть кода, нужную для выполнения их задачи.

Для того, чтобы сервер знал, что страничка не обычная, а содержит SSI-директивы, она имеет специальное расширение: *.shtml или *.shtm, наличие которого и заставляет web-сервер предварительно обрабатывать странички. Вообще-то, расширение может быть любое — в зависимости от конфигурации web-сервера, но в основном применяется именно *.shtml.

Полная страничка формируется web-сервером на лету, собирая код странички из таких вот блоков. Для того, чтобы указать серверу, какой блок нужно вставить и в каком месте странички, используется специальная форма записи в виде комментария. Вот такая:

где # — признак начала SSI-вставки

param — параметры SSI-команды

SSI-команд насчитывается около десятка, но я расскажу только о самых употребимых. Самая популярная команда — это команда включения содержимого одного файла в другой:

где include — команда вставки

virtual — параметр, определяющий, как трактовать путь — как абсолютный file или как относительный virtual

«/path/file.ssi» — путь к включаемому файлу

Результатом ее выполнения будет вставка содержимого файла file.ssi в месте появления данной директивы. При просмотре сформированного исходника HTML-файла мы не увидим никаких признаков SSI, т.к. данный механизм действует абсолютно прозрачно для броузеров, они получают исключительно корректный HTML-код.

Следующая команда — это команда установки значения переменной:

где var — команда установки значения переменной

pic — имя переменной

«picture.gif» — значение переменной

В данном случае мы определили переменную с именем pic и присвоили ей строковое значение «picture.gif». Значение переменной pic теперь доступно внутри SSI-вставки, и мы можем его использовать по нашему усмотрению.

Например, используя одну и ту же SSI-вставку, но с разными значениями определенной в ней переменной, мы получим различные результаты.

Перед тем, как показать реальный пример использования переменных в SSI-включениях, я расскажу о некоторых командах, применяемых при работе с переменными. Во-первых, это команда печати значения переменной:

Ее выполнение приведет к тому, что в месте появления команды напечатается значение переменной pic, т.е. «picture.gif».

Переменная может участвовать в выражениях, в этом случае перед ней ставится знак ‘$’, показывающий, что это именно переменная, а не просто текст.

После такого присвоения переменная B будет содержать строку «123456». Если же в текст понадобится просто вставить знак ‘$’ или какой-нибудь из других специальных знаков, то его нужно предварить слешем, вот так: ‘\$’. В некоторых случаях для избежания двусмысленности значение переменной может быть заключено в фигурные скобки: «$».

Более сложное применение переменных возможно с использованием условных операторов, имеющих следующую форму написания:

где condition — условие для сравнения

В зависимости от результатов проверки мы можем подставить тот или иной фрагмент кода. Допустим, мы можем проанализировать тип броузера пользователя и в зависимости от этого выдать либо код для Netscape Navigator-а, либо Internet Explorer-а. Это может оказаться полезным в некоторых случаях, когда невозможно сделать страничку, которая корректно отображалась бы в обоих броузерах. Вот пример использования условного оператора:

Что угодно, но не понедельник.

В данном случае условием проверки является существование переменной $Monday и, в зависимости от этого, подстановка того или иного HTML-кода.

Теперь давайте рассмотрим реальный пример применения SSI для формирования сложного документа из нескольких SSI-вставок.

Вначале напишем текст основного HTML-документа, полагая, что SSI-вставки находятся в каталоге /ssi:

SSI — Включение кода на стороне сервера. Server-Side Includes

config — контролирует различные аспекты сканирования. Его атрибутами могут быть:

  • errmsg — устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;
  • sizefmt — устанавливает формат, в котором будет выводиться размер файла. Формат соответствует передаваемому библиотечной функции strftime;
  • timefmt — устанавливает формат, в котором будет выводиться дата.

Переменные для sizefmt:

Переменные для 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 директив. В этих случаях знак доллара можно вставить, предварив его слешом:

Для предотвращения двусмысленности можно заключать имя переменной в фигурные скобки:

В результате такого присвоения переменная Zed будет иметь значение «Xbc_Y», если переменная a равна X, а переменная abc равна Y.

printenv — Выводит список так называемых «переменных окружения» («environment variables») с их значениями. Вызывается без параметров. В их числе переменные:

  • DOCUMENT_ROOT (название основной папки для вебстраниц на сервере, обычно ваша папка public_html и путь к ней)
  • HTTP_USER_AGENT (название браузера, которым пользуется посетитель)
  • REMOTE_ADDR (IP-адрес посетителя)
  • REMOTE_HOST (адрес посетителя в нормальной форме — например, adsl53.peterlink.ru)
  • SERVER_ADDR (IP-адрес вашего сайта)
  • SERVER_NAME и HTTP_HOST (адрес сервера, типа userguide.webservis.ru),
  • DOCUMENT_URI, REQUEST_URI и SCRIPT_NAME (запрошенная вами страница, типа /examples/mysqlexample.shtml.),
  • DOCUMENT_NAME (имя файла (без каталогов) документа, запрошенного пользователем),
  • SCRIPT_FILENAME (полный путь к вебстранице на сервере. Например /home/home-webservis/public_html/ и так далее),
  • SERVER_SOFTWARE (название сервера, например, Apache/1.3.2 (Unix))
  • SERVER_ADMIN (почтовый адрес владельца сервера, указанный при установке),
  • DATE_LOCAL (сегодняшниее время и дата в вашем часовом поясе(для сервера)),
  • DATE_GMT (текущее время по Гринвичу),
  • LAST_MODIFIED (дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя «главного» документа, а не вложенного).

echo — выводит значение установленной переменной SSI. Допустимые атрибуты:

flastmod — выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.

fsize — выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:

  • file — определяет путь к файлу, относительно сканируемого документа;
  • virtual — определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) — относительно корня документов узла.

include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

  • file — указывает путь, относительно сканируемого документа; путь не может содержать ../ и не может быть абсолютным путем; всегда предпочтительнее использовать атрибут virtual;
  • virtual — содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста, и может содержать строку запроса.

Условные операторы

Базовыми элементами контроля являются:

Элементы elif и else являются необязательными.

Элемент endif заканчивает элемент if и является обязательным.

test_condition может быть одним из следующих:

  • string — истинно, если string не пуста;
  • string1 = string2
  • string1 != string2
  • string1 string2
  • string1 >= string2
  • всё вышеперечисленное истинно, если выполняется условие сравнения;
  • string1

string2 — истинно, если string1 содержит в себе string2;

string1 =

/string2/ — истинно, если string1 содержит в себе string2, а string2 — регулярное выражение Unix (см. ниже).

Если 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-команду из скрипта, и скрипт из скрипта).

Что такое SSI, или Сделай свой сайт проще! (Часть 1)

Интернет-технологии в наши дни становятся все доступнее. Открыть свой сайт в Интернете может любой, выбор возможностей — на любой вкус. Можно кропотливо выписывать тэги в «Блокноте», можно использовать специальные визуальные редакторы, можно просто набросать страницу в Microsoft Word и сохранить в формате HTML. Словом, «твори, выдумывай, пробуй!». Совершенно не обязательно быть профессиональным программистом или дизайнером, все чаще на арену Интернета выходят любители.

Почти каждый непрофессиональный сайт начинает свое существование в виде нескольких HTML-документов, связанных между собой перекрестными ссылками. Многие так и уходят в таком состоянии в информационную вечность. Но некоторые любительские сайты все же становится популярными, обрастают жирком информационного наполнения, нагуливают объем. Иногда разрастаются до десятков и даже сотен страниц. Но по сути своей остаются набором раз и навсегда сформированных документов.

Поддерживать и обновлять такой сайт — сущее мучение для его владельца. Страница, как правило, состоит из нескольких блоков, причем часть их них неизменна для всех страниц сайта. Это заголовок, навигационное меню, рекламный блок, подвал страницы. Если что-то захочется изменить в одном из таких постоянных блоков, это придется вручную сделать на каждой странице сайта. Удовольствие весьма сомнительное. Часто интересные идеи остаются нереализованными именно из-за большого объема правки десятков отдельных страниц. SSI позволяет значительно облегчить эту работу. Кроме того, технология SSI позволяет делать еще кое-что, принципиально не выполнимое средствами HTML. Использовать SSI просто, хотя знание языка HTML очень поможет. Если вы не испугались, то вперед!


Прежде всего, расшифруем аббревиатуру SSI — Server Side Includes. По-русски, «включения на стороне сервера». Все понятно? Тогда на этом закончим… Хотя лучше будет все-таки пояснить. SSI — это директивы, вставляемые в HTML-код и управляющие web-сервером. Встречая в файле такие SSI-вставки, web-сервер выполняет определенные действия. Например, добавление HTML-кода из другого файла, формирование страниц «на лету» в зависимости от типа браузера и многое другое.

Использование SSI (на стороне сервера)

Я пытаюсь научиться делать Server Side Includes, потому что мне нужны они для моего проекта. Теперь я могу использовать SSI локально? Мой сайт — это 100% HTML, Javascript и CSS, поэтому сервер не работает. Я просто редактирую файлы в блокноте. Что я могу сделать, чтобы позволить мне работать с SSI, прежде чем загружать его на сервер, на который я планирую отправить его.

Что я могу сделать, чтобы позволить мне работать с SSI, прежде чем я загружу его на сервер.

Если вы не используете сервер, то вы не можете использовать серверную часть. Это ключ от имени. Поэтому, если вы тестируете страницу локально без сервера, ваши SSI не будут работать.

Единственный способ, которым вы собираетесь это сделать, — установить веб-сервер на локальном ПК.

К счастью, это довольно легко. Двумя основными веб-серверами являются Apache и IIS. Apache свободен; вы можете скачать его и установить бесплатно. IIS — это коммерческий продукт (от Microsoft), но есть версия для вырезания, которую вы можете установить бесплатно. Выберите подходящий для вас вариант (то есть тот, который соответствует вашему фактическому веб-серверу), и вы сможете получить код SSI. Вам, вероятно, понадобится сделать какую-то конфигурацию, чтобы настроить ее, но, как веб-разработчик, хорошо знать, как это сделать.

SSI — Включение кода на стороне сервера. Server-Side Includes

SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа.

Краткое описание SSI

SSI — это аббревиатура расшифровывается как Server-Side Includes, что переводится с английского — включения со стороны сервера. Пересылая клиенту файл, содержащий SSI, сервер обрабатывает эти директивы. О применении некоторых директив читайте статью Применение SSI. Здесь же я только опишу директивы и покажу результаты их работы.

Необходимый минимум SSI

Наряду с неоспоримыми достоинствами бесплатного хостинга, есть и существенные недостатки. Больше всего меня раздражает отсутствие SSI. Если и вас тоже, сообщаю: Выход есть! И довольно простой, как в поговорке про все гениальное.

SSI — что, когда, как?

Основным, простейшим, но в то же время чрезвычайно мощным инструментом поддержки больших наборов документов является SSI (Server-Side Includes — включения на стороне сервера).

Как заставить Apache понимать SSI

Будем надеятться, что у вас не слишком старая версия Apache, и модуль SSI уже установлен и подключен.

Делаем свой сайт на SSI

Примеры примерами, но не у всех хватит творческого мышления, чтобы применить эту информацию. Я этих людей осуждать не вправе, но помочь в состоянии.

Зачем нам нужен SSI

Как все нормальные люди, вначале расшифруем аббревиатуру SSI — Server Side Includes или, по-русски, — включения на стороне сервера. Понятно? Нет? Ну, тогда расскажу поподробнее…

Основы SSI

SSI расшифровывается как Server Side Include. SSI — это набор команд, позволяющий включить в страницу информацию, недоступную средствами HTML, такую как вывод программ, значения переменных окружения и статистику по файлам (размер, дата создания и др.). Все это и более позволяют делать CGI-скрипты, но зачем писать целый скрипт для получения размера файла, если можно воспользоваться SSI?:)

Как тестировать сайт на SSI в домашних условиях

Вводная ситуация: мне нужно собрать сайт на SSI, но у меня нет постоянного соединения с оплатой «только трафика», зато есть повременка, которая и так изрядно опустошает мой карман. Решение вполне очевидно — установить веб-сервер на свою машину, сделать сайт и затем выложить его на «постоянное место жительства».

Сайт по кирпичикам или все о SSI

Перед любым мало-мальски серьезным сайтостроителем рано (гораздо лучше) или поздно (опыт — сын ошибок трудных) встает проблема уменьшения ручной работы, унификации кода сайта и вообще. Вполне резонное желание делать поменьше, а результат получать быстрее упирается только в возможность — как это сделать?

SSI для бедных

SSI – это простая и удобная технология организации динамических страничек. SSI экономит место на сервере, и одновременно делает администрирование сайта удобней в десятки раз! Все бы было хорошо, если бы. для использования этой технологии нужны специальные разрешения сервера. На бесплатном хостинге, у Вас поддержки этой технологии может не быть.

SSI проверка IP

Таким образом можно загружать содержимое разных страниц, в зависимости от ip запрашивающего.

SSI: вкусно и полезно

В этой статье я расскажу о технологии server side include (ssi). Вещь эта в www-дизайне чрезвычайно нужная и полезная, так как во много раз облегчает работу по созданию и поддержке web-сайта.

Основы технологии Server Side Includes или SSI

Я хочу рассказать вам об основах технологии server side includes или ssi.

Включение механизма Server-Side Includes

Любой документ, у которого будет установлен обработчик «server-parsed» будет сканироваться этим модулем, если включена опция «includes».

Базовые директивы директивы SSI

Очень часто значение помещается в двойные кавычки. Некоторые команды позволяют иметь только одну пару атрибут-значение. Обратите внимание, что заключительная часть комментария () должна отделяться от директивы пробелом, иначе она будет воспринята, как ее часть.

Как обойтись без использования SSI

Вот типичная ситуация: Вы, полный желанием и фантазией, хотите сделать свой сайт. Вот Вы уже начали делать html странички, но перед Вами встал серьёзный вопрос, на какой сервер помещать сайт? Естественно Вы не будет платить деньги за представленное место на диске сервера, а следовательно будет искать подходящий бесплатный хостинг.

Серверные включения SSI (часть 1)

С точки зрения непрофессиональнала серверные включения, SSI (Server Side Includes)- это специальные заполнители в HTML-документе, которые сервер будет заменять реальными данными непосредственно перед отправкой на браузер окончательного документа. К тому времени, как документ попадает на браузер, он ничем не отличается от других страниц, как будто данные в HTML-код вставлены вручную.

Основные функции

Директивы SSI позволяют использовать в HTML документах такие возможности как: выполнение других программ, получение информации о файлах, переменных среды. SSI позволяет в отдельных случаях добиваться довольно многого обходясь без написания CGI..

SSI в примерах

Для начала о причинах, побудивших написать меня эту статью: в обсуждениях членов Всероссийского Клуба Вебмастеров не раз возникали споры о том, что лучше применять в случае повторяющейся разметки (информации) на большом количестве страниц — фреймы, JavaScript или SSI (Server Side Includes).

Передача и обработка данных средствами SSI

SSI — Server Site Includes — «включения со стороны сервера». Означает это то, что сервер, когда передает запрашиваемый документ, встретив в нем директиву SSI, обрабатывает ее «на лету» и выдает результат. При этом, в отличие от, например, JavaScript, сами директивы пользователю не видны. Он может даже и не догадываться о том, что вы используете SSI.

Передача и обработка данных средствами SSI

Данные передаются точно так же, как и для обычных html файлов — через URL либо с помощью формы методом GET. В принципе, и обрабатывать их можно точно так же. Но, если вы хотите изменять SSI-вставку в зависимости от переданных данных, читайте дальше.

Использование SSI в построении сайта

В этой статье я приблизительно расскажу о том как практически использовать технологию SSI.

Функция ECHO

Предназначена для вставки в документ значений специальных переменных SSI, а также других переменных среды.

SSI и общий стиль

При создании сайта многие Вебмастера испытывают сложности с его оформлением, особенно это проявляется в первые этапы разработки. Приходится всё время что-то менять, исправлять и убирать. С одной страницей это легко, но, что делать когда у Вас более 10 страниц. Возьмём к примеру такую ситуацию. У Вас 100 страниц сайта и Вам вдруг неожиданно потребовалось в верхней части каждой страницы поместить какой-то элемент (баннер, ссылка и т.д.) Исправлять 100 страниц очень и очень туго, да и стоит ли. Даже при помощи всяких программ-заменителей это не просто сделать, особенно когда менять не одну строчку, а несколько. Как решить эту проблему?

SSI — Включение кода на стороне сервера. Server-Side Includes

Ну уж, так-таки и всё?

Когда я задумывал это руководство, мысль была именно такая — весь язык-то немногим больше словарного запаса людоедки Эллочки.

Но оказалось, что всё не так просто. Практически, сколько серверов, столько и разных нюансов в настройках. Чтобы разобраться во всём этом, нужно быть администратором сервера, иметь доступ к его настройкам и уметь этими настройками пользоваться. Всё это пока что за пределами моих возможностей и знаний (хотя некоторые чисто абстрактные знания, недоступные мне на практике, пришлось-таки загрузить в мозги).

Обилие компактных руководств в интернете для простых пользователей вроде меня, не спасает, а порой добавляет ещё больше неясности в силу недосказанности и, пардон, ошибок в примерах кода. Метод интенсивного тыка помог понять кое-что из того, что нигде не описано. Этот же метод помог понять и то, что некоторые вещи мне недоступны по вышеизложенным причинам.

По крайней мере, здесь вы найдёте практически исчерпывающий набор директив, атрибутов, операторов.

Описаны и переменные окружения (о полном наборе говорить не приходится, т.к. на каждом сервере он свой).

Кое-что «нарыл» я и в такой «мутной» теме, как регулярные выражения.

Моё «всё» означает отсутствие недосказанностей. Если что-то не работает в моём серверном окружении, я прямо об этом говорю.

Для удобства я разделил пособие на «шаги» и справочник. В «шагах» мы будем двигаться от простого к сложному, осваивая методику на ограниченном языковом материале. Здесь используются только те элементы языка, правильную работу которых я могу гарантировать

Справочник содержит по возможности полную информацию по элементам языка, и им можно пользоваться как словарём.

На досуге продолжаю экспериментировать с «неопознанными объектами». Если заработает что-то новенькое, то тут же появится в справочнике.

Кое-что о терминологии. В разных справочниках используются как синонимы понятия «директива», «инструкция» и «функция».

Я пользуюсь терминами «директива» и «инструкция», которые не совсем синонимы. В конструкции вроде под директивой понимается ключевое слово, начинающееся со знака # (в данном примере — #include ), а под инструкцией — всё выражение, находящееся между тэгами и —-> или комплекс директива-атрибут (в данном случае — #include file ).

ЧТО ЭТО ТАКОЕ

SSI (эс-эс-ай, в просторечии «Асисяй», Server Side Includes — включения на стороне сервера) — небольшой язык для сборки web-страницы «на лету» из составных частей, находящихся на сервере. В какой-то мере можно считать его альтернативой технологии фреймов, лишённой её печально известных недостатков.

Кроме фреймов, мы знаем и другие различные включения. Например,
или . Но все они выполняются браузером пользователя, и в исходном коде страницы мы видим ссылающиеся тэги. Включения же SSI происходят на самом сервере, и, просматривая в браузере исходный код, мы видим просто сплошной HTML-код страницы, как будто она и не собрана из лоскутков.

Кроме загрузки кусков HTML-кода, SSI делает и кое-что ещё, о чём мы скоро узнаем.

Существует две модификации SSI: XSSI (eXtended SSI) и SSI+. Внятных спецификаций этих стандартов нет. Пока что удалось установить методом «тыка», что XSSI работает, по крайней мере, на тех серверах, с которыми я имею дело, а SSI+ на них не работает.

В этом, нулевом шаге мы ещё не начинаем работать с SSI, а лишь готовим «рабочее место».

НАСТРОЙКА СЕРВЕРА

Чтобы эта технология заработала, нужно указать нужные настройки в файле .htaccess , который должен находиться в корневой папке вашего сервера. Обычно по умолчанию какие-то настройки уже есть, например:

Рассмотрим по очереди.

Это означает, что куски кода, добавляемые в основной документ, должны быть сохранены в файлах с расширением .txt .

Эта настройка сообщает о том, что расширение основного документа должно быть .shtml , иначе SSI не заработает.

Можно сделать и другие, более широкие настройки, указав несколько расширений через запятые, например:

То есть теперь в файл с обычным расширением .html или .htm можно вставить куски кода, написанные в файлах .html , .htm или .txt .

Все файлы с расширениями, указанными в настройках, сервер будет проверять на наличие включений. Это может несколько замедлить их загрузку. Поэтому, если файлов на сайте много, а файлов с использованием SSI — мало, то есть смысл оставить минимальные настройки, чтобы сервер не проверял лишние файлы.

Включаемые файлы .html и .txt иногда работают немного по-разному. Об этом я ещё нигде не читал, но на практике напоролся. В соответствующем разделе я это прокомментирую.

И последняя строка:

Она запускает заданные выше настройки.

Возможна и другая запускающая строка:

Это запустит не только вставки SSI, но и другие серверные скрипты, написанные на языках PHP, Perl и т.п.

Если вы новичок и боитесь что-то испортить в настройках файла .htaccess, данных по умолчанию, то не стирайте и не исправляйте их, а предварите знаком #, что превратит их в комментарии, а затем напишите свои:

#AddType text/html .txt
#AddHandler server-parsed .shtml
#Options +ExecCGI
AddType text/html .html, .htm, .txt
AddHandler server-parsed .html, .htm, .shtml
Options +Includes

Если решили поэкспериментировать и безнадёжно запутались — сотрите своё «творчество» и раскомментируйте настройки по умолчанию.

Если страница с включением SSI не отобразит этой вставки, значит, настройки не запустились.

Если вместо включённого фрагмента на странице появится сообщение

(то есть «ошибка при выполнении директивы»), это означает, что запуск произошёл, но либо настройки недостаточны, либо есть ошибка в коде директивы SSI.

Последнее обновление страницы: 17.11.2020, 06:20

Илон Маск рекомендует:  Что такое код readline
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL