‹

Справочник Веб-дизайнера: Директивы SSI

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/docs/ssi_.htm

SSI - Server Side Includes. Учебник

  1. Директивы SSI
  2. Операции и операторы SSI
  3. Особенности SSI скриптов
  4. Область применения SSI

Директивы SSI

В начале перечислю используемые в SSI директивы, чтобы дальнейший текст понимали не только те, кто свободно владеет SSI, но и новички. Директив совсем не много:

 

#include file – включает текст другого файла в текущий файл. Если это cgi-скрипт, запускает его и вставляет в страницу выданный им результат.

Имя включаемого файла не должно содержать путь (он должен находиться в одном каталоге с включающим файлом), но может содержать параметры типа myscript.shtm?myparam=1.

Например: <!--#include file="ssi.html" -->

 

#include virtual – подобно #include file включает текст другого файла в текущий файл или запускает cgi-script. В отличие от #include file может содержать относительный или абсолютный путь без названия протокола (HTTP://) и доменного имени (webdesign.site3k.ru) – то есть, не может указывать на файл другого сайта (для экспорта файлов другого сайта применяется ssi интерфейс скрипты apache include включить описание учебник пример поддержка директивы PHP).

В директиве допускаются пути типа:

example/_ssi.html – указывает на файл _ssi.html, находящийся в подкаталоге example текущего каталога.

../_ssi.html – указывает на файл _ssi.html, находящийся в каталоге, в котором вложен текущий (родительском).

/_ssi.html – указывает на файл _ssi.html, находящийся в корневом каталоге сайта (для http://webdesign.site3k.ru/ это файл http://webdesign.site3k.ru/_ssi.html).

Например: <!--#include virtual="_ssi.html" -->

 

#fsize file – Вставляет размер указанного файла. Файл, размер которого определяется, должен находиться на том же сайте, что и файл, содержащий данную инструкцию. Более того, он должен находится либо в том же каталоге, либо во вложеном каталоге.

Например: <!--#fsize file="ssi.html" --> Выведет размер данного файла: 37K.

Формат размера определяется по SSI-инструкции #config sizefmt.

 

#fsize virtual – Вставляет размер указанного файла. В отличие от #fsize file может содержать относительный или абсолютный путь без названия протокола (HTTP://) и доменного имени и, таким образом, указывать на файл в другом каталоге того же сайта.

Например: <!--#fsize virtual="/docs/ssi.html" --> Выведет размер данного файла: 37K.

Формат размера определяется по SSI-инструкции #config sizefmt.

 

#flastmod file – Вставляет дату последней модификации указанного файла. Файл, дата модификации которого определяется, должен находиться на том же сайте, что и файл, содержащий инструкцию. Так же, он должен находится либо в том же каталоге, либо во вложеном каталоге.

Например: <!--#flastmod file="ssi.html" --> Выведет дату последней модификации данного файла: 10.08.2014 г.

Формат даты определяется по SSI-инструкции #config timefmt.

 

#flastmod virtual – Вставляет дату последней модификации указанного файла. В отличие от #flastmod file может содержать относительный или абсолютный путь без названия протокола (HTTP://) и доменного имени и, таким образом, указывать на файл в другом каталоге того же сайта.

Например: <!--#flastmod virtual="/docs/ssi.html" --> Выведет дату последней модификации данного файла: 10.08.2014 г.

Формат даты определяется по SSI-инструкции #config timefmt.

 

#exec cmd – Запускает внешнюю программу и вставляет в содержимое страницы результат ее выполнения.

Например, <!--#exec cmd="myprog" -->

 

#exec cgi – Подобно #exec cmd запускает cgi-скрипт и вставляет в содержимое страницы результат его выполнения.

Например, <!--#exec cgi="/cgi-bin/example.cgi" -->

Однако многие дизайнеры рекомендуют использовать для этого #include file или #include virtual, так как #exec cgi может не работать на некоторых серверах.

 

#config errmsg – определяет сообщение, выводящееся в текст при возникновении ошибки. Поскольку сообщение выводится прямо в текст страницы, может иметь смысл привести его к пустой строке (<!--#config errmsg="" -->) или попросить посетителя сообщить автору об ошибке (<!--#config errmsg="При открытии страницы произошла ошибка. Пожалуйста, сообщите об этом по адресу: mymail@myserver.ru" -->).

 

#config timefmt – определяет формат даты для команды #flastmod file, используя следующие параметры:

ФорматОписаниеПример
ФорматОписаниеПример
Формат SSI-директивы #config 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
%pAM/PM (до полудня/после)AM
%rВремя в формате "I:M:S p"11:35:46 PM
%SСекунды34
%sВремя в секундах с 01.01.1970957228726
%TВремя в формате "%H:%M:%S"14:05:34
%UНеделя года16
%wНомер дня недели4
%yГод в формате ГГ99
%YГод в формате ГГГГ1999
%ZВременная зонаMSK

В результате, не подготовленная команда <!--#flastmod file="ssi.html" --> дает следующий вывод: 10.08.2014 г

И эта же команда, после SSI директивы <!--#config timefmt="%d.%m.%Y г" -->, выдаст: 10.08.2014 г

 

#config sizefmt – определяет формат размера для команды #fsize file. <!--#config sizefmt="abbrev" --> настраивает на вывод размера файла в килобайтах ( 37K), а <!--#config sizefmt="bytes" --> – в байтах (37,782)

 

#printenv – Подобно команде SET старого, доброго DOS-а, выводит текущие значения переменных окружения, такие как:

HTTP_USER_AGENT – название браузера, которым пользуется посетитель.

REMOTE_ADDR – IP-адрес посетителя.

REMOTE_HOST – адрес посетителя в нормальной форме.

SERVER_ADDR – IP-адрес сайта.

SERVER_NAME – адрес сервера.

CHARSET_HTTP_METHOD – протокол ((none))

REQUEST_METHOD – метод запроса страницы (GET)

HTTP_HOST – имя сайта (webdesign.site3k.ru)

REQUEST_URI – вся строка запроса, без указания протокола и имени сайта (/docs/ssi_.htm)

QUERY_STRING – все, что находилось в адресной строке после вопросительного знака (обычно это параметры форм) Попробуйте вызвать эту страницу с какими-то параметрами после вопросительного знака и вы увидете их здесь ()

SCRIPT_NAME – полный путь к странице от корня сайта (/docs/ssi_.htm). Сочетание http://, HTTP_HOST и SCRIPT_NAME даёт привычный адрес страницы http://webdesign.site3k.ru/docs/ssi_.htm).

DOCUMENT_NAME – только название файла. (ssi_.htm)

HTTP_REFERER – страница, с которой перешли на эту ((none))

SCRIPT_FILENAME – полный путь к странице на сервере (/home/users/s/supervisork/domains/webdesign.site3k.ru/docs/ssi_.htm)

SERVER_SOFTWARE – название сервера и установленных модулей.

SERVER_ADMIN – почтовый адрес владельца сервера, указанный при установке.

DATE_LOCAL – сегодняшнее время и дата в вашем часовом поясе.

DATE_GMT – то же, но по Гринвичу.

LAST_MODIFIED – дата и время последнего обновления страницы.

Практическое применение команда <!--#printenv --> имеет только для отладки страницы, что очень важно, учитывая тот факт что, у каждого сервера свой набор переменных. Вот что получается в результате ее применения на сайте webdesign.site3k.ru:

downgrade-1.0=
suppress-error-charset=
HTTP_HOST=webdesign.site3k.ru
HTTP_X_PROTOCOL=HTTP/1.1
HTTP_X_SERVER_IP=195.161.62.167
HTTP_X_FORWARDED_FOR=18.97.14.91
HTTP_X_FORWARDED_PROTOCOL=http
HTTP_X_FORWARDED_PROTO=http
HTTP_CONNECTION=close
HTTP_USER_AGENT=CCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
HTTP_IF_MODIFIED_SINCE=Sat, 03 Aug 2024 09:17:13 GMT
HTTP_ACCEPT_ENCODING=br,gzip
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache
SERVER_NAME=webdesign.site3k.ru
SERVER_ADDR=127.0.0.1
SERVER_PORT=80
REMOTE_ADDR=18.97.14.91
DOCUMENT_ROOT=/home/users/s/supervisork/domains/webdesign.site3k.ru
REQUEST_SCHEME=http
CONTEXT_PREFIX=
CONTEXT_DOCUMENT_ROOT=/home/users/s/supervisork/domains/webdesign.site3k.ru
SERVER_ADMIN=info@jino.ru
SCRIPT_FILENAME=/home/users/s/supervisork/domains/webdesign.site3k.ru/docs/ssi_.htm
REMOTE_PORT=43736
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/docs/ssi_.htm
SCRIPT_NAME=/docs/ssi_.htm
DATE_LOCAL=17.02.2025 г
DATE_GMT=17.02.2025 г
LAST_MODIFIED=10.08.2014 г
DOCUMENT_URI=/docs/ssi_.htm
DOCUMENT_ARGS=
USER_NAME=supervisork
DOCUMENT_NAME=ssi_.htm
DIR=
WORDS=ssi интерфейс скрипты apache include включить описание учебник пример поддержка директивы 
KEYW=SSI Server Side Includes серверное включение скрипта WEB Веб-дизайн веб-страница Интернет скрипт script cgi frame object iframe internet сайт site файл htm html shtml документация справочник SSI руководство пользователя русский скачать учебник страницы создание www язык html сайты справочник help файлы книги примеры самоучитель документы вставить меню описание html 
DESCRIP=SSI - Server Side Includes технология серверного включения скрипта с наглядными примерами. WEB Веб-дизайн. ssi интерфейс скрипты ssi apache include включить ssi описание учебник ssi пример поддержка ssi директивы настройка ssi использование ssi html htaccess ssi exec книга ssi мануал настройка ssi apache протокол ssi меню документация apache2 shtml стандарт ssi справочник.
TITL=SSI интерфейс скрипты apache SSI include включить описание учебник SSI пример поддержка SSI директивы
HEAD=Справочник Веб-дизайнера: Директивы SSI
ROB=index, follow
BROWSER=YES

Однако, сами переменные, применяются часто. Например в SSI-директиве #echo var.

 

#echo var – Используется для вывода значения переменной указанной в качестве параметра.

Например:

Ваш IP – <!--#echo var="REMOTE_ADDR" -->
Ваш браузер – <!--#echo var="HTTP_USER_AGENT" -->
Мой сервер – <!--#echo var="SERVER_NAME" -->
Вы пришли со страницы – <!--#echo var="HTTP_REFERER" -->
Вы находитесь на странице – http://<!--#echo var="HTTP_HOST" --><!--#echo var="SCRIPT_NAME" -->

 

Выводит следующий текст:

Ваш IP – 18.97.14.91 
Ваш браузер – CCBot/2.0 (https://commoncrawl.org/faq/) 
Мой сервер – webdesign.site3k.ru 
Вы пришли со страницы – (none) 
Вы находитесь на странице – http://webdesign.site3k.ru/docs/ssi_.htm

В новых версиях SSI по умолчанию команда SSI echo использует кодирование entity и добавлен параметр encoding. Encoding должен задаваться ДО параметра var. Возможные значения encoding:

entity — (по умолчанию) будет произведено преобразование специальных HTML-символов в сущности и русский текст в кодировке Windows-1252 превратится в кракозябры (назначение данного преобразования непонятно);

url — будет произведено escape-преобразование, все символы все английского алфавита приобретут вид %nn, где nn - код символа в 16-ричной кодировке, что позволит их применять в строке URL;

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

Пример: <!--#echo encoding="none" var="MyText" -->

 

#set var value – Устанавливает значение переменной, если переменной нет – создает. Формат команды set var="ИМЯ_ПЕРЕМЕННОЙ" value="ЕЕ_ЗНАЧЕНИЕ"

Например, такой код:

Значение переменной SERVER_NAME=«"<!--#echo var="SERVER_NAME" -->»
Сменим значение: <!--#set var="SERVER_NAME" value="discoverer.by.ru" -->
Теперь значение переменной SERVER_NAME=«<!--#echo var="SERVER_NAME" -->»

 

Выведет следующие строки:

Значение переменной SERVER_NAME=«webdesign.site3k.ru»
Сменим значение: 
Теперь значение переменной SERVER_NAME=«discoverer.by.ru»

 

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

<!--#set var="MyText" value="Это самое наглядное пособие по <B>SSI</B>" -->

Чтобы в нужном месте страницы применить команду <!--#echo encoding="none" var="MyText" -->

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

Естественно, определить переменную, нужно до ее применения на странице.

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

Операции и операторы SSI.

SSI не поддерживает математических вычислений и строковых операций. Однако, SSI-технология поддерживает подстановки, которые можно расценивать как аналог конкатенации. Подстановка позволяет использовать переменные окружения в качестве параметров SSI-директив и комбинировать значения переменных и строк (производить конкатенацию). При подстановке переменные заключаются в фигурные скобки «{}», и предваряются знаком доллара «$» (иногда скобки можно опустить).

Например:

<!--#set var="NEW_VAR" value="http://${HTTP_HOST}${SCRIPT_NAME}" -->
<!--#echo var="NEW_VAR" -->

Поместит в переменную NEW_VAR полный путь и имя данной страницы и выведет его в текст:

http://webdesign.site3k.ru/docs/ssi_.htm

При необходимости включения в подстановку знаков доллара, слеша, фигурных скобок и кавычек, их предваряют слешем:

\$ \/ \" \{ \}

#if, #elif, #else и #endif – Условные операторы. Позволяют выполнять код или выводить текст на страницу в зависимости от результата логического сравнения. Код, не соответствующий условию, никоим образом не появится даже при просмотре «исходного текста».

Формат оператора:

<!--#if expr="ПЕРВОЕ_УСЛОВИЕ" -->
HTML-код, который будет выводиться, если ПЕРВОЕ_УСЛОВИЕ истинно
<!--#elif expr="ВТОРОЕ_УСЛОВИЕ" -->
HTML-код, который будет выводиться, если ПЕРВОЕ_УСЛОВИЕ ложно, а ВТОРОЕ_УСЛОВИЕ истинно
<!--#else -->
HTML-код, который будет выводиться, если все условия ложны
<!--#endif -->

Условие - это либо строка, которая является истинной, если она непустая, или набор операторов сравнения строк. Операторами могут быть:

Если вторая строка заключена в слеши («/»), она является регулярным выражением. Например, условие истинно, если в первой строке встречается хоть одно вхождение второй строки.

Можно объединять несколько операторов сравнения с помощью операторов && («логическое И») и || («логическое ИЛИ»). Для группирования условий используются скобки. Для включение в условие переменных, их предваряют знаком доллара. Например:

Страница запрошена
<!--#if expr="$HTTP_USER_AGENT=/Opera/" -->
браузером Opera
<!--#elif expr="$HTTP_USER_AGENT=/MSIE/ || $HTTP_USER_AGENT=/Microsoft/" -->
браузером Microsoft Internet Explorer
<!--#elif expr="$HTTP_USER_AGENT=/Mozilla/" -->
браузером Netscape Navigator
<!--#else -->
поисковым роботом
<!--#endif -->

Результат:

Страница запрошена

поисковым роботом
 

ssi интерфейс скрипты apache include включить описание учебник пример поддержка директивы Внимание: Любая SSI-директива должна начинаться с символов <!--# (комментарий и решетка), и завершаться символами --> (конец комментария). При этом, между концом SSI директивы и дефисами конца комментария должен быть, по крайней мере, один пробел – иначе сервер может не правильно распознать директиву, приняв дефисы и угловую скобку за конец команды.

Особенности SSI скриптов

Область применения SSI.

Обычно SSI применяется там же, где  Frame, Object, Script src=… и т. д., например, для включения в WEB-страницу повторяющихся фрагментов (меню, баннерные коды, заголовки). Однако, механизм включения совершенно иной. Если в Frame, Object, Script src=… и т. д. включаемый файл просто выдается сервером и уже на месте вставляется агентом пользователя (браузером), то в случае с SSI браузер получает страницу в уже готовом виде. Включение происходит прямо на сервере, а это порождает следующие отличия:

Что применять: Frame, Object, Script src=… или SSI – личное дело каждого.

 

Комментарии к странице‹

 

 

 


На главную страницу сайта