Глаза страшат, а руки делают

ШАГ 0


  • От автора
  • Что это такое
  • Настройка сервера

ОТ АВТОРА

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

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

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

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

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

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

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

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

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

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

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

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

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

ЧТО ЭТО ТАКОЕ

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

Кроме фреймов, мы знаем и другие различные включения. Например, <link rel="stylesheet" href="файл.css" type="text/css"> или <script src="файл.js" type="text/javascript"></script>. Но все они выполняются браузером пользователя, и в исходном коде страницы мы видим ссылающиеся тэги. Включения же SSI происходят на самом сервере, и, просматривая в браузере исходный код, мы видим просто сплошной HTML-код страницы, как будто она и не собрана из лоскутков.

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

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

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

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

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

AddType text/html .txt
AddHandler server-parsed .shtml
Options +Includes

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

AddType text/html .txt

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

AddHandler server-parsed .shtml

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

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

AddType text/html .html, .htm, .txt
AddHandler server-parsed .html, .htm, .shtml

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

ПРИМЕЧАНИЕ 1

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

ПРИМЕЧАНИЕ 2

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

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

Options +Includes

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

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

Options +ExecCGI

Это запустит не только вставки 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 не отобразит этой вставки, значит, настройки не запустились.

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

[an error occurred while processing this directive]

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


Следующий шаг >>


 007249