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

Красносельский
Константин
Константинович

Компьютер и программы

Веб-дизайн

Справочники

Документация по CSS1

Настройка файла .htaccess

Коды ошибки http сервера

Подстановочные символы и регулярные выражения

Спецификация файла robots.txt

SSI – Server Side Includes

Таблица кодировки символов кириллицы

Нестандартные символы в HTML

Вторая таблица символов HTML

MIME Types (типы файлов)

 

Советы начинающим

Как в PHP поместить enum в массив

Советы начинающим Веб-дизайнерам: Что, где и зачем.

Правила плохого тона

WEB-уловки

Камень предкновения: верстка таблицами или блоками?

Рекомендации по разработке веб сайта

 

Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

Анализ WEB-конъюнктуры

Предисловие

Приручение поисковых машин

Уровень документа - все гениальное просто

Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

Если гора не идет к Магомету

Индекс цитирования

Что это такое и с чем его едят

Приобретение веса в глазах общественности

Послесловие

Последние замечания по интернет-раскрутке

 

Приложения

А: «Рекомендации лучших пауководов»

Краткий комментарий.

Советы специалистов поисковой системы Rambler.

Использование файлов robots.txt.

Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

Добавление страниц

Индексирование

Положение страницы на выдаче

Поиск со своей страницы

Ответы на часто задаваемые вопросы

 

Б: «1000 сверх-сайтов Рунета»

1000 сверх-сайтов Рунета

 

В: «Сто наиболее популярных поисковых слов»

Сто наиболее популярных поисковых слов

 

Г: «Где это сделать?»

Где это сделать?

 

Д: «Практическое руководство!!!»

Краткий комментарий.

Окна, ссылки и меню.

Ссылки и окна. Внешний вид и внутреннее содержание.

Организация ссылок. Всевозможные оглавления.

Если вам не нравятся фреймы, значит, вы не умеете их готовить.

Меню из выпадающих списков (javascript и CSS).

Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

Обработка баз данных браузером посетителя

Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

Отправка писем с веб-страницы.

Формы

Методы форм.

Создание на сайте PHP голосования.

Регистрация и контроль посетителей (PHP).

Интерактивность материала.

Создание гостевой книги на PHP.

Удаление записей из текстовых баз (PHP).

Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

Псевдослучайные элементы (PHP, javascript).

Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

Клоакинг и технология «Входных дверей».

Отложенное выполнение и выполнение с заданным интервалом (javascript)

Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

Консультации

Экспорт и импорт новостей

PHP chmod – права доступа к файлам

WEB 2.0 – миф, или реальность?

Давно забытый AJAX

Способы хранения веб-страниц: документы FrontPage или базы данных

Как заработать на своем сайте?

FTP клиент, как настроить Total Commander

Знак собаки @ и подавление ошибок в PHP

AJAX

AJAX с точностью до наоборот, или как научить AJAX сохранять историю в браузере

 

Мониторинг веб сайтов и анализ поисковых запросов

Документация по Веб-дизайну

Желающим скачать PHP скрипт или JavaScript

 

Литература и поэзия

Гуманитарные науки

ssi интерфейс скрипты apache include включить описание учебник пример поддержка директивы ssi интерфейс скрипты apache include включить описание учебник пример поддержка директивы Мастерская

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Хронология материалов

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Обращение к посетителям

Шрифт Font Шрифты Fonts скачать Скачать шрифты

Реферат по психологии религии логике информатике. рефераты контрольные курсовые работы скачать на халаву психология религия информатика халява логика контрольная курсовая работа Скачать рефераты

Создание web сайта на заказ Создание web сайта на заказ

Создание, разработка web сайта на заказ. WEB-design Создание веб сайтов (цены)

web Сайты, созданные Красносельским К. К. Веб-дизайн разработка сайтов на заказ. WEB-design Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки Полезные ссылки

Красносельский К. К. Компьютер Windows DOS система реестр BIOS программы Веб-дизайн PHP Perl CSS HTML CGI Java JavaScript музыка поэзия стихи тексты песен Психология философия психоанализ психиатрия логика сознание разум мышление интуиция развитие человек реферат религия информатика Об авторе

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Статистика сайта

Показать фреймы

 

Web На сайте

 

 

 

ТаблицейБлоками.

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

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

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

Моя студия веб-дизайна

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

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

Директивы 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 – вся строка запроса, без указания протокола и имени сайта (/noframe/docs/ssi.html)

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

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

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

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

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

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

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

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

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

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

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

REDIRECT_noframe=1
REDIRECT_downgrade-1.0=
REDIRECT_suppress-error-charset=
REDIRECT_STATUS=200
downgrade-1.0=
suppress-error-charset=
HTTP_HOST=webdesign.site3k.ru
HTTP_X_REAL_IP=18.119.124.52
HTTP_X_PROTOCOL=HTTP/1.1
HTTP_X_SERVER_IP=81.177.135.173
HTTP_X_FORWARDED_FOR=18.119.124.52
HTTP_X_FORWARDED_PROTOCOL=http
HTTP_X_FORWARDED_PROTO=http
HTTP_CONNECTION=close
HTTP_ACCEPT=*/*
HTTP_USER_AGENT=Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT_ENCODING=gzip, br, zstd, deflate
PATH=/usr/bin:/bin:/usr/local/bin
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache
SERVER_NAME=webdesign.site3k.ru
SERVER_ADDR=81.177.135.173
SERVER_PORT=80
REMOTE_ADDR=18.119.124.52
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.html
REMOTE_PORT=42092
REDIRECT_URL=/noframe/docs/ssi.html
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.0
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/noframe/docs/ssi.html
SCRIPT_NAME=/docs/ssi.html
DATE_LOCAL=24.11.2024 г
DATE_GMT=24.11.2024 г
LAST_MODIFIED=10.08.2014 г
DOCUMENT_URI=/docs/ssi.html
USER_NAME=supervisork
DOCUMENT_NAME=ssi.html
WORDS=
KEYW=
DESCRIP=
TITL=
HEAD=
ROB=index, follow
BROWSER=Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
DIR=noframe/
PER=NO

Однако, сами переменные, применяются часто. Например в 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.119.124.52 
Ваш браузер – Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) 
Мой сервер – webdesign.site3k.ru 
Вы пришли со страницы – (none) 
Вы находитесь на странице – http://webdesign.site3k.ru/docs/ssi.html

В новых версиях 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.html

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

\$ \/ \" \{ \}

#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 -->

Результат:

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

браузером Netscape Navigator
 

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

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

  • SSI – Server Side Includes переводится как включение со стороны сервера. В самом названии отображаются главные особенности SSI:
  • SSI инструкции не работают на локальных компьютерах, они обрабатываются только ВЕБ-серверами и, то, как будет выглядеть страница в итоге, можно увидеть только поместив ее на сервер и загрузив от туда в браузере. Перед выдачей страницы, сервер считывает ее строку за строкой, и находя SSI-инструкции обрабатывает, вставляя вместо них, результат выполнения. Сами инструкции, в полученной поситителем странице не сохраняются.
  • SSI не может включать файлы с другого домена.
  • SSI поддерживается не всеми серверами и, о его поддержке владельцы серверов обязательно указывают в описании хоста.
  • SSI обрабатывается не во всех файлах. Во многих файлах содержимое просто не анализируется на содержание SSI-инструкций – это делается, чтобы не замедлять работу сервера лишней обработкой. Обрабатываемые типы файлов указываются в описании хоста. Так же, их можно посмотреть в httpd.conf или srm.conf (если у вас есть к ним доступ). На анализ SSI-инструкций указывают строки:
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    
    Обычно это HTM, HTML и SHTML файлы.
  • Иногда для обработки SSI-директив требуется размещение в корне сайта файла .htaccess (имя начинается с точки), с инструкциями типа
    AddHandler	server-parsed	.shtml
    AddHandler	server-parsed	.html
    
    Это может быть единственным способом повлиять на работу сервера, если вы не являетесь его администратором.
  • Иногда недобрые админы запрещают выполнение в SSI-директивах PHP-скриптов, и вместо результата выполнения скрипта появляется надпись типа
    "[an error occurred while processing this directive]"
    В этом случае в .htaccess требуется добавить директиву
    Options +Includes 
    
    Больше информации о файле .htaccess можно посмотреть на  «Настройка файла .htaccess»
  • SSI обрабатывается не во всех каталогах. Для того чтобы в каталоге обрабатывались SSI-директивы, в файле access.conf этот каталог должен быть описан как Options Indexes Includes (или Options Includes), вложенные каталоги наследуют опцию и не требуют отдельной записи. Не у каждого есть доступ к этому файлу, однако, существует общее не писаное правило: на многих хостах содержимое делят на 2 корневые директории: cgi-bin и WWW. В файлах из директории cgi-bin никакие файлы (обычно) не проверяются на SSI-инструкции и никакие файлы (даже включенные по #include virtual) не отображаются в браузерах. Поэтому, файл, являющийся фрагментом страницы и включаемый в нее SSI-директивой НЕ доложен находиться в каталоге cgi-bin – в cgi-bin могут находиться только cgi-скрипты, так как они не включаются в страницу непосредственно (включается только результат их выполнения).
  • SSI-директивы обрабатываются не только в файлах, запрашиваемых посетителем, но и во включаемых в них фрагментах, если те имеют расширение, для которого разрешена проверка на наличие SSI-директив. Это может применяться различным образом, в частности, для обработки переменных, заданных на странице, включающей эти фрагменты.
  • Обычно, любые файлы в WWW-директории можно включить по SSI-директиве include, поэтому сами фрагменты, могут храниться в файлах с любым расширением. Тем не менее, следует учитывать что, HTM и HTML-файлы индексируются поисковыми системами, а значит, те могут послать посетителя на неполный фрагмент страницы (это, конечно, маловероятно, так как для этого на данный фрагмент должна быть проиндексированная ссылка), что, в свою очередь, может разочаровать его и оттолкнуть от сайта. Избежать такого, досадного, курьеза можно несколькими способами:
    1. Не помещая включаемые фрагменты в HTM и HTML файлы.
    2. Ввести в файл robots.txt (см.  «Спецификация файла robots.txt») директиву disallow: /НЕКИЙ_СИМВОЛ и имена всех включаемых файлов начинать с этого символа.
    3. Включить код проверки имени файла во все включаемые фрагменты, с тем, чтобы при совпадении имени с именем фрагмента, осуществлять переброску посетителя на другую страницу. Например:
      <!--#if expr="$DOCUMENT_NAME=_head.shtml" -->
      <meta http-equiv='refresh' content='0; URL=index.html'>
      <!--#endif -->
      
      Такой код не только даст возможность посетителю попасть на нормальную страницу, но и приведет к тому, что поисковики вскоре перестанут присылать людей на этот фрагмент.
      Вместо мета-тега можно использовать другие средства, но это может вызвать подозрение в клоакинге (подробности в  Клоакинг – технология «Входных дверей (Doorways)»).

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

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

  • При включении типа Frame, Object, Script src=… и т. д. посетитель может узнать исходный код страницы, а при SSI-включении – нет. Сокрытие исходного кода может быть полезным автору.
  • При включении типа Frame, Object, Script src=… и т. д. требуется логическая завершенность включаемых объектов, а при SSI-внедрении – нет. Это так же, может оказаться удобным, так как позволяет дробить страницу на произвольные фрагменты и выделять в отдельные файлы большее количество общих мест.
  • При включении типа Frame, Object и т. д. к объекту, находящемуся во включенном фрагменте можно обратиться как ИМЯ_ФРАГМЕНТА.ИМЯ_ОБЪЕКТА, а к объекту, внедренному SSI-инструкцией, как к обычному элементу страницы – так проще.
  • При включении типа Frame, Object и т. д. можно разрешить пользователю менять содержимое объектов, а при SSI-внедрении – нет. Это заметно сужает область применения SSI.
  • При включении типа Frame, Object, Script src=… и т. д. обработка условий и прочих директив происходит на компьютере посетителя, а при SSI – на сервере. Тем самым SSI-технология замедляет загрузку: выигрыш достигается, только если большие фрагменты либо включаются, либо не включаются, в зависимости от конкретных условий (тогда, хотя и возрастает нагрузка серверного процессора, уменьшается нагрузка на линию связи).
  • Поскольку SSI выполняется сервером, истинный вид страницы, можно увидеть только там, что не удобно. Программы, позволяющие получить SSI на локальном компьютере, дают не совсем тот же вариант, хотя бы за счет различия в переменных типа DOCUMENT_URI. А с учетом непосредственных настроек каждого конкретного сервера, разница может иметь принципиальное значение.
  • При включении типа Frame, Object, Script src=… и т. д. включаемый объект загружается только однажды и, при последующем включении, берется из кэша. При SSI-внедрении, фрагмент загружается с каждой новой страницей, ЗНАЧИТЕЛЬНО замедляя загрузку: Это уже совсем плохо.
  • При включении типа Frame, Object, Script src=… и т. д. меню находится в одном файле, а при SSI, внедряется в каждую страницу, тем самым, рассредоточивая внутреннюю ссылочную значимость, и портя все дело, когда требуется сосредоточить весь ссылочный вес на главной странице.

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

Пример из жизни.

Хороший и простой пример вы можете глянуть и на странице Способы хранения веб-страниц: документы FrontPage или базы данных

 

Пример фреймовой организации вы видите здесь. Другим примером может послужить сайт http://praktika.h14.ru, основанный на SSI.

Вариант с применением SSI-внедрения:

Исходный код главной страницы – index.html, в общих чертах:

Открыть в отдельном окне

Включаемый файл _head.shtml, имеет код:

Открыть в отдельном окне

Включаемый файл _logo.shtml:

Открыть в отдельном окне

Включаемый файл _menu.shtml:

Открыть в отдельном окне

Включаемый файл _center1.shtml:

Открыть в отдельном окне

Включаемый файл _ban.shtml:

Открыть в отдельном окне

Включаемый файл _ban2.shtml:

Открыть в отдельном окне

Включаемый файл _foot.shtml:

Открыть в отдельном окне

Этот же сайт во фреймовом варианте состоял бы из таких страниц (один из многих возможных вариантов):

index.html

Открыть в отдельном окне

Включаемый файл lefttop.htm:

Открыть в отдельном окне

Включаемый файл righttop.htm:

Открыть в отдельном окне

Включаемый файл menu.htm:

Открыть в отдельном окне

Включаемый файл foot.htm:

Открыть в отдельном окне

Практическое отличие одной и той же страницы, построенной с применением различных технологий лишь в том, что каждая страница объектов технологии IFRAME выглядит полнее и является вполне самостоятельной. Это несколько увеличивает время загрузки первой страницы, но зато, за счет кэширования, повторяющиеся фрагменты не приходится загружать со следующей страницей и дальнейшая загрузка значительно ускоряется (подробней о преимуществах Frame смотрите в  «Если вам не нравятся фреймы, значит вы не умеете их готовить»). Сочетание двух технологий включения дает наиболее качественный результат. Оно применяется на всех профессиональных сайтах и, если Frame и Object могут где-то не встретиться, то, по крайней мере, Script src=… и <link rel="stylesheet" href="…" type="text/css"> (то же включение кода, содержащегося в отдельном файле и загружающегося только однажды), используется повсеместно.

Применение IFRAME не может полностью заменить SSI, так как SSI позволяет не только загрузить фрагменты по условию (что можно решить и скриптом), но и, как показано в примере, через переменные передать им любые параметры. Без SSI это можно сделать только методом POST или через HTTP_REFERER (продолжение имени файла, после вопросительного знака), для дальнейшей обработки каким-либо скриптом. Но возможности такой передачи не идут ни в какое сравнение с возможностями передачи значений SSI переменных. Поэтому, применение SSI может потребоваться даже на страницах, основанных на фреймах – чем больше инструментов нам доступно, тем лучше и быстрее получается результат.

 

Комментарии к странице (всего 11)

 

 

 


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