Основи технології Server Side Includes чи SSI. SSI інтерфейс скрипти apache SSI include включити опис підручник SSI приклад підтримка SSI директиви

#include virtualподібно до #include file включає текст іншого файлу в поточний файлабо запускає cgi-script. На відміну від #include file може містити відносний або абсолютний шляхбез назви протоколу (HTTP://) та доменне ім'я (сайт) ¦ тобто, не може вказувати на файл іншого сайту (для експорту файлів іншого сайту застосовується PHP).

У директиві допускаються шляхи типу:

example/_ssi.html Вказує на файл _ssi.html, що знаходиться в підкаталозі example поточного каталогу.

../_ssi.html Вказує на файл _ssi.html, що знаходиться в каталозі, в якому вкладено поточний (батьківському).

/_ssi.html Вказує на файл _ssi.html, що знаходиться в кореневому каталозі сайту (для цього файл http://сайт/_ssi.html).

Наприклад:

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

Наприклад:

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

Наприклад: Виведе розмір даного файлу: 37K.

Формат розміру визначається за SSI-інструкцією.

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

Наприклад:

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

Наприклад: Виведе дату останньої модифікації цього файлу: 10.08.2014 р.

Формат дати визначається за SSI-інструкцією.

#exec cmd¦ Запускає зовнішню програмута вставляє у вміст сторінки результат її виконання.

Наприклад,

#exec cgi¦ Подібно #exec cmdзапускає cgi-скрипт і вставляє у вміст сторінки результат його виконання.

Наприклад,

#config errmsg| Визначає повідомлення, що виводиться в текст при виникненні помилки. Оскільки повідомлення виводиться прямо в текст сторінки, може мати сенс привести його до порожній рядку ( ) або попросити відвідувача повідомити автора про помилку ().

#config timefmtвизначає формат дати для команди , використовуючи наступні параметри:

Формат 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

В результаті, не підготовлена ​​команда дає наступний висновок: 10.08.2014 р.

І ця ж команда, після SSI директиви , видасть: 10.08.2014 р

#config sizefmtвизначає формат розміру для команди. налаштовує виведення розміру файлу в кілобайтах (37K), а в байтах (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ім'я сайту (сайт)

REQUEST_URIвесь рядок запиту, без зазначення протоколу та імені сайту (/docs/ssi.html)

QUERY_STRINGвсе, що знаходилося в адресному рядкупісля знака питання(зазвичай це параметри форм) Спробуйте викликати цю сторінку з якимись параметрами після знака питання і ви побачите їх тут ()

SCRIPT_NAME – повний шляхдо сторінки від кореня сайту (/docs/ssi.html)..html).

DOCUMENT_NAMEТільки назва файлу. (ssi.html)

HTTP_REFERERсторінка, з якої перейшли на цю ((none))

SCRIPT_FILENAMEповний шлях до сторінки на сервері (/home/users/s/supervisork/domains/сайт/docs/ssi.html)

SERVER_SOFTWAREНазва сервера та встановлених модулів.

SERVER_ADMIN – Поштова адресавласника сервера, вказаного під час встановлення.

DATE_LOCAL¦ сьогоднішній час і дата у вашому часовому поясі.

DATE_GMTТе саме, але за Грінвічем.

LAST_MODIFIEDдата і час останнього оновленнясторінки.

Практичне застосування команда має тільки для налагодження сторінки, що дуже важливо, враховуючи той факт, що у кожного сервера свій набір змінних. Ось що виходить в результаті її застосування на сайті:

Downgrade-1..76.94.14 HTTP_X_PROTOCOL=HTTP/1.1 HTTP_X_SERVER_IP=81.177.135.112 HTTP_X_FORWARDED_FOR=144.76.94.14 HTTP_X_FORWARDED_PROTOCOL= /5.0 (compatible; Googlebot/2.1; +http://www.google. com/bot..177.135.112 SERVER_PORT=80 REMOTE_ADDR=144.76.94..ru SCRIPT_FILENAME=/home/users/s/supervisork/domains/сайт/docs/ssi.html REMOTE_PORT=32920 GATEWAY_INTER /1.0 REQUEST_METHOD=GET QUERY_STRING= REQUEST_URI=/docs/ssi.html SCRIPT_NAME=/docs/ssi.html DATE_LOCAL=17.03.2019 г DATE_GMT=17.03.2019 г 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 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) DIR = PER=YES

Однак, самі змінні застосовуються часто. Наприклад, у SSI-директиві # Echo var.

#echo var¦ Використовується для виведення значення змінної вказаної як параметр.

Наприклад:

Ваш IP Ваш браузер Мій сервер Ви прийшли зі сторінки Ви знаходитесь на сторінці http://

Виводить наступний текст:

Ваш IP 144.76.94.14 Ваш браузер Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Мій сервер webdesign.site3k..html

У нових версіях SSI за замовчуванням команда SSI echo використовує кодування entity та доданий параметр encoding. Encoding повинен задаватися до параметра var. Можливі значення encoding:

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

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

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

Приклад:

#set var valueВстановлює значення змінної, якщо змінної немає створює. Формат команди set var="ІМ'Я_ЗМІННОЇ " value="ЇЇ_ЗНАЧЕННЯ !}"

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

Значення змінної SERVER_NAME=« " » Змінимо значення: Тепер значення змінної SERVER_NAME=« »

Виведе наступні рядки:

Значення змінної SERVER_NAME=«сайт» Змінимо значення: Тепер значення змінної SERVER_NAME=«discoverer.by.ru»

Звичайно, підміняти стандартні змінні оточення може зовсім не має сенсу, але призначати свої змінні буває зручно, наприклад:

Щоб у потрібному місці сторінки застосувати команду

Виглядає так: Це найнаочніший посібник з SSI(Зверніть увагу, спеціальні символив старої версії SSI буде перекодовано так, щоб відображатися на сторінці, а не працювати, як очікується.

Звичайно, визначити змінну, потрібно до її застосування на сторінці.

Можливість роботи зі змінними є однією з найважливіших особливостей SSI. Якби не було, ця технологія не мала б такого широкого поширення.

Операції та оператори SSI.

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

Наприклад:

Помістить у змінну NEW_VAR повний шлях та ім'я даної сторінки та виведе його до тексту:

Http://сайт/docs/ssi.html

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

\$ \/ \" \{ \}

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

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

HTML-код, який буде виводитися, якщо ПЕРШЕ_УМОВИ істинно HTML-код, який буде виводитися, якщо ПЕРШЕ_УМОВИ хибно, а ДРУГЕ_УМОВИ істинно HTML-код, який буде виводитися, якщо всі умови помилкові

Умова - це або рядок, який є істинним, якщо він непустий, або набір операторів порівняння рядків. Операторами можуть бути:

    Рівність = Нерівність != Менше < Менше, чи одно <= Більше > Більше, чи одно >= Заперечення (не вірно що) !

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

Можна поєднувати кілька операторів порівняння за допомогою операторів && («логічне І») та || («логічне АБО»). Для групування умов використовуються дужки. Для включення в умову змінних їх передують знаком долара. Наприклад:

Сторінка запрошенабраузером Operaбраузером Microsoft Internet Explorerбраузером Netscape Navigatorпошуковим роботом

Результат:

Сторінку запросили браузер 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. єдиним способомвплинути на роботу сервера, якщо ви не є його адміністратором.
  • Іноді недобрі адміни забороняють виконання в SSI-директивах PHP-скриптів, і замість результату виконання скрипта з'являється напис типу
    ""
    У цьому випадку до .htaccess потрібно додати директиву Options +Includes Більше інформаціїпро файл.htaccess можна переглянути на «Налаштування файлу.htaccess»
  • SSI обробляється не у всіх каталогах. Для того, щоб у каталозі оброблялися SSI-директиви, у файлі access.conf цей каталог має бути описаний як Options Indexes Includes (або Options Includes), вкладені каталоги успадковують опцію і не вимагають окремого запису. Не в кожного є доступ до цього файлу, однак існує загальне не писане правило: на багатьох хостах вміст ділять на 2 кореневі директорії: cgi-bin та WWW. У файлах з директорії cgi-bin жодні файли (зазвичай) не перевіряються на SSI-інструкції і жодні файли (навіть включені по ) не відображаються у браузерах. Тому, файл, що є фрагментом сторінки і включається до неї SSI-директивою НЕ докладено перебувати у каталозі cgi-bin в cgi-bin можуть бути лише cgi-скрипти, оскільки де вони включаються у сторінку безпосередньо (включається лише результат виконання).
  • SSI-директиви обробляються не тільки у файлах, що запитуються відвідувачем, але й у фрагментах, що включаються до них, якщо ті мають розширення, для якого дозволена перевірка на наявність SSI-директив. Це може застосовуватись по-різномузокрема для обробки змінних, заданих на сторінці, що включає ці фрагменти.
  • Зазвичай, будь-які файли в WWW-директорії можна включити по SSI-директиві include, тому самі фрагменти можуть зберігатися у файлах з будь-яким розширенням. Тим не менш, слід враховувати, що HTM і HTML-файли індексуються пошуковими системами, А значить, ті можуть надіслати відвідувача на неповний фрагмент сторінки (це, звичайно, малоймовірно, тому що для цього на даний фрагмент має бути проіндексована посилання), що, у свою чергу, може розчарувати його і відштовхнути від сайту. Уникнути такого, прикрого, курйозу можна кількома способами:

Область застосування 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 - особиста справа кожного.

Файл, що включається foot.htm:

Практична відмінність однієї і тієї ж сторінки, побудованої із застосуванням різних технологій лише в тому, що кожна сторінка об'єктів технології IFRAME виглядає повнішою і є цілком самостійною. Це дещо збільшує час завантаження першої сторінки, зате, за рахунок кешування, повторювані фрагменти не доводиться завантажувати з наступною сторінкоюі подальше завантаження значно прискорюється (докладніше про переваги Frame дивіться в «Якщо вам не подобаються фрейми, то ви не вмієте їх готувати»). Поєднання двох технологій включення дає найякісніший результат. Воно застосовується на всіх професійних сайтах і, якщо Frame і Object можуть десь не зустрітися, то принаймні Script src= і (те ж включення коду, що міститься в окремому файліі що завантажується тільки один раз), використовується повсюдно.

Застосування IFRAME неспроможна повністю замінити SSI, оскільки SSI дозволяє як завантажити фрагменти за умовою (що можна вирішити і скриптом), а й, як показано у прикладі, через змінні передати їм будь-які параметри. Без SSI це можна зробити лише методом POSTабо через HTTP_REFERER (продовження імені файлу, після знака запитання), для подальшої обробки будь-яким скриптом. Але можливості такої передачі не йдуть у жодне порівняння з можливостями передачі значень SSI змінних. Тому застосування SSI може знадобитися навіть на сторінках, заснованих на фреймах. більше інструментівнам доступно, тим краще і швидше виходить результат.

SSI (Server Side Includes) — технологія, яка дозволяє зручно «збирати» веб-сторінки з частин, вставляти в них результати виконання CGI-скриптів та надавати сторінкам інші елементи динаміки.

Які файли обробляються як SSI, як додати файли

За промовчанням веб-сервер перевіряє на наявність SSI-інструкцій тільки файли з розширенням *.shtml. Наприклад, помістіть SSI-команди у файл index.shtml і це відразу працюватиме. Якщо є необхідність перевіряти на наявність SSI інші файли, можна додати відповідні розширення для перевірки, помістивши у файл .htaccess:

наступну інструкцію

AddHandler server-parsed .ext1.ext1

Тут - розширення файлів, які повинні перевірятися на наявність у них SSI. Не рекомендується додавати розширення .html і .htm, тому що в цьому випадку сервер перевірятиме всі html-файли на наявність SSI-вставок. Це може призвести до безглуздого навантаження на сервер.

Обмеження

Користувачам хостингу доступні всі директиви SSI за винятком одного обмеження для абонентів, які використовують тариф, що не передбачає запуску власних cgi-скриптів. Для цих клієнтів запуск скриптів недоступний через SSI-інструкції. Тобто у термінах Apache для них діє опція NoExec.

Технологію SSI користувачі в основному можуть використовувати для двох цілей: для «склейки» сторінки з частин html-коду і для запуску скриптів з метою розміщення результатів їх роботи на створюваній html-сторінці. У першому випадку з диска сервера читаються відповідні файли і вставляються в код сторінки, звідки викликаний SSI-код. У другому випадку веб-сервер, знайшовши інструкцію SSI, запускає скрипт, розміщений на диску, і вставляє в підсумкову сторінку результат виконання скрипта.

Розглянемо докладніше:

    "Склеювання" сторінки з частин html-коду.Використовується для того, щоб не дублювати у безлічі веб-сторінок один і той же HTML-код. Наприклад, можна винести весь дизайн у SSI-включення, які підключати до конкретного html-файлу, в якому буде міститися лише текст конкретної сторінки.

    Помістимо у файл header.inc «заголовок» веб-сторінки (елементи дизайну, меню, потрібні посиланнята інші елементи, які присутні на всіх сторінках), а файл footer.inc помістимо нижню частину веб-сторінки (завершальну частину дизайну). Далі створимо файл з ім'ям index.shtml, який виглядатиме так:

    А тут ми матимемо основний текст сторінки;

    Передбачається, що у файли-включення ми помістили html-код хоча б на кшталт початкових/кінцевих тегів , , і так далі. В результаті користувач отримає сторінку, в яку спочатку буде включено вміст файлу header.inc , далі слова «А тут у нас буде основний текст сторінки» і потім вміст файлу footer.inc.

    Таке використання SSI зручно з точки зору відсутності необхідності весь час вставляти знову створювані сторінкиодин і той же HTML-код, а також з точки зору зручності зміни основних елементів сайту - змінюємо в одному місці HTML-код, який відразу змінюється на всіх сторінках по всьому сайту.

    Запуск скриптів та розміщення результатів їх роботи на створюваній html-сторінці.Таким чином, можна розмістити на сторінці практично будь-який функціонал, наприклад, мовою Perl (або іншою мовою програмування, яку підтримує хостинг).

    Наприклад, у вас є скрипт-лічильник, який показує, скільки відвідувачів заходило на вашу сторінку і знаходиться він за адресою /cgi-bin/count.pl.Включимо результат його роботи на веб-сторінку. Для цього в коді html-сторінки розмістимо такий SSI-код:

    У результаті на сторінці, яку побачить користувач, буде розміщено лічильник, який вивів скрипт /cgi-bin/count.pl.

    Повний списоккоманд SSI ви знайдете в описі Apache-модуля mod_include

Ще приклади використання SSI

Інструкції SSI можна використовувати не тільки для запуску скриптів та увімкнення файлів. Також SSI дозволяє працювати зі змінними оточення веб-сервера, проводити маніпуляції з датами, виконувати команди за умовою тощо. Гарний описнайбільш затребуваних застосувань команд SSI ви знайдете на сервері CIT Forum.

Діагностика помилок під час використання SSI

Якщо при використанні SSI-команд на своїх html-сторінках ви побачили повідомлення "", це свідчить про помилку при обробці SSI-інструкції веб-сервером.

Можливі причинивиникнення такої помилки.

Що таке ssiі з чим його їдять?

Server Side Include (SSI).Ця річ у WWW-дизайні надзвичайно потрібна і корисна, так як у багато разів полегшує роботу зі створення та підтримки Web-сайту.

Server Side Include з англійської перекладається як "включається на стороні сервера". Ця технологія дозволяє Web-серверу включати в текст ваших HTML-сторінок будь-який інший текст: вміст текстових файлів або, наприклад, результат роботи CGI-скриптів (який, як відомо, зазвичай оформляється як HTML-тексту). Відбувається це "включення" безпосередньо перед передачею тексту HTML-сторінки броузеру користувача, тому відвідувач сторінки навіть не здогадується про цю серверну "метушку".

Яка ж користь від SSI? Користь величезна. Припустимо, на кожній сторінці сайту ви помістили список доступних розділів сайту. Творіння ваше, як і належить, постійно розвивається, і ось ви вирішили додати ще один розділ. Що ж тепер відкривати всі сторінки в редакторі і тупо додавати в текст те саме? Радянський піонер (який любить труднощі) вчинив би саме так, а розумний Web-дизайнер стане використовувати SSI. Для цього достатньо створити окремий текстовий файл (наприклад, menu.html) та занести туди HTML-код списку розділів. Безпосередньо ж у сторінки сайту, у тому місці, де має знаходитись список розділів, потрібно вставити таку інструкцію:
Зверніть увагу на те, що потрібно дослівно слідувати синтаксису директив SSI. Забудете, наприклад, поставити два тире наприкінці директиви - і сервер їй буквально "придушиться", припинивши аналіз сторінки.

Коли хтось захоче переглянути цю сторінку, сервер замінить інструкцію<#include>вмістом файлу menu.html. Якщо ви зміните файл menu.html, то всі сторінки, де ви використовували<#include>, автоматично оновлюються. Зверніть увагу: у HTML-файлах, що лежать на диску Web-сервера, нічого не змінюється - сервер здійснює вставку тексту "на льоту", перед тим, як відправити WWW-сторінку до браузера відвідувача.

Замість імені звичайного текстового файлув інструкції<#include>можна вказувати ім'я CGI-скрипту. У цьому випадку сервер спочатку виконає CGI-скрипт, а потім вставить результат роботи скрипту у текст WWW-сторінки. Це означає, що ви зможете реалізувати такі речі, як, наприклад, текстовий лічильниквідвідування або відображення на сторінці випадково вибраної фрази.

Є ще одна непряма перевага застосування SSI: через використання шаблонів типу вищезгаданого menu.html WWW-сторінки будуть меншими за обсягом, і ви зможете заощадити чимало часу, переписуючи файли на Web-сервер FTP.

Але не все так чудово. Наприклад, вам не вдасться поексперементувати з механізмом SSI на машині, на якій не встановлено веб-сервер. Функціонування SSI забезпечується саме сервером, тому під час перегляду HTML-файлів з локального жорсткого диска(наприклад, С:), ваш броузер проігнорує директиви SSI – адже вони, з погляду HTML, є звичайними коментарями.

Крім того, сервер має бути налаштований для підтримки SSI. І трапляються такі жадібні провайдери, які починають вимагати гроші за таке налаштування. Найкраще не користуватися їхніми послугами, тому що підтримка SSI включається додаванням пари рядків у файли конфігурації Web-сервера Apacheі ще деякими нехитрими діями адміністратора, за що брати гроші, на мій погляд, грішно.

На щастя таких провайдерів не дуже багато. Більшість пропонують підтримку SSI за промовчанням. Але врахуйте, що на безкоштовних серверів, таких як Хоом, Tripod, Geocities, Chat.ru SSI не дозволяється. Тут нічого поробити не можна:-(

До речі про налаштування сервера. При включенні підтримки SSI сервер починає переглядати всі сторінки щодо наявності в них директив SSI, що збільшує навантаження на сервер. Тому дуже часто системні адміністраторивключають SSI тільки для файлів із певним розширенням - зазвичай. Так що якщо у файлах.html SSI не працює, спробуйте перейменувати їх на.shtml, а краще запитайте про це системного адміністратора:-)

Загалом, SSI – дійсно корисний інструментігнорувати який, якщо вам дорого свій час (і гроші), не варто.

Що таке SSI та з чим його їдять II

Цією статтею хотілося відкрити новий підрозділ на DVK URL CLUB. "Ваша колонка" покликана зібрати матеріали та думки наших відвідувачів. Перша стаття написана нашим модератором розділу "Перекур" за мотивами одного з топиків на "Перекурі", в якій Олександр пояснює деякі особливості використання директив SSI. Також автор хоче нагадати вам, що інструкціями SSI можна користуватися тільки на тому сервері, який їх підтримує. Більшість безкоштовних хостингівв мережі не виділяється такою особливістю, а просто не підтримують SSI.

Преамбула
Суть і найпростіші прийоми SSI вже були описані на даному сайті. Як правило, на розвалах статей з мастерингу рідко зустрічається щось окрім опису єдиної функції "include" у найпростішому варіанті.

Однак SSI сміливо можна назвати мовою програмування, хай не повноцінною, але мовою. SSI дозволяє визначати умови та змінні, а також вміє працювати з так званими змінними оточення, однією з яких є $QUERY_STRING, що активно використовується при програмуванні на Perl, PHP та інших мовах створення серверних скриптів. Тут і починається найцікавіше.

Суть явища чи результат, який має Webmaster.
За великим рахунком, мова зараз піде про шаблони. При чергове оновленнялюдині, що обслуговує сайт, буде достатньо додати посилання на нову сторінкув змісті і створити файл зі звичайним форматованим текстом без будь-якої розмітки. Погодьтеся, що це дуже зручно:)

Технологія: Умовні директиви та змінна оточення$QUERY_STRING.
Втім, є якийсь шаблон index.shtml, який представляє собою таке:

:: Титул, млинець::



... Круті теги та крута графіка...

Тут, в принципі, проблем із розумінням не повинно виникати, а ось далі – найцікавіше. Поясню, що значення змінної $QUERY_STRING визначається вмістом рядка запиту після знаку "?", тобто. http://maste.ru/razdel/index.shtml?page1.
друга та ключова частина:



Я думаю, що потрібне розшифрування. Ми маємо п'ять директив, з яких три відносяться до умовних, а дві – звичайні інклюди:
Перевіряється вміст рядка запиту щодо наявності конструкції "?something" і у разі позитивного результатувиконується друга директива.
Підключається файл з ім'ям, ідентичним вмісту рядка, допустимо, якщо рядок запиту виглядає так: "http://maste.ru/razdel/index.shtml?page1", то підключається файл "page1.txt", що лежить в одній директорії з індексним файлом.
Виконується в тому випадку, якщо вмісту "?something" у рядку немає, а URL виглядає так: "http://maste.ru/razdel/index.shtml" або так: "http://maste.ru/razdel/ ", і переходить до виконання четвертої директиви".
Підключається файл за замовчуванням, що містить, зазвичай, зміст розділу, тобто. посилання на файли розділу, які мають виглядати так: посилання на сторінку №1 і т.д.
Завершення умови.
Далі піде кіл нижньої частини html-коду:
... ще трохи Крутих тегів та крутої графіки...




Як це працюватиме?
У папку звалюються файли:
index.shtml (типу термінал);
default.txt (список посилань сторінка 1 і тэ де і тэ пэ і хететепе:);
файли page1.txt, ..., page571756.txt поки не набридне, (в принципі назва може бути будь-яким, головне щоб воно збігалося зі вмістом після "?" у відповідному посиланні).
Якщо передбачається використання директив SSI всередині рядових файлів, то краще їх зробити так само. shtm, .

Ось! Юзайте на здоров'я:)


Я хочу розповісти вам про основи технології server side includesабо SSI.
ssi перекладається як "ввімкнення з боку сервера". Ця технологія допомагає зберегти багато часу при створенні сайту та закачуванні його на сервер. Взагалі ssi покликана наскільки це можливо, полегшити роботу web-майстра.

Ось, наприклад, цілком реальна ситуація:
У вас є сайт, який, зрозуміло, не використовує ssi, з числом сторінок близьким до:, та візьмемо хоча б 50 сторінок. Отже, на кожній сторінці ви, як добрий web-майстер, що піклується про своїх відвідувачів, розмістив текстове меню. І раптом з якихось причин назва якогось розділу змінилася, а можливо, вам захотілося додати новий. Що ж тепер знову відкривати всі п'ятдесят сторінок і переписувати все знову і знову?! У нашому випадку це, на жаль, єдине рішення, щоправда, деякі хороші редакторизможуть полегшити цю непосильну ношу (і ще як полегшити!, Homesite, наприклад).

Так ось, такої проблеми у вас не сталося б, якщо ви використовували технологію SSI. Пояснюю: якби замість текстового меню на всіх сторінках було написано щось на зразок

А у файлі "(www)/ssi/menu_txt.html" було б зміст цього меню, то для того, щоб додати або змінити розділ потрібно було б тільки поміняти зміст всього лише одного файлу menu_txt.html. Як ви, напевно, вже здогадалися на всі сторінки замість "коментаря"

буде вставлено код із menu_txt.html.

Синтаксис SSI директив.

Синтаксис ssi директив такий:
Усі директиви полягають у коментарі

Головною відмінністю ssi директиви від коментаря є символ "#" одразу(!) після "

і ніяк інакше!

Ось список деяких ssi "функцій" (вони одразу пишуться після символу "#")

include

Включає текст (код, зміст) вказаного документа/файлу до цього документа. Положення файлів на сервері вказується за допомогою таких атрибутів:

file — необхідно вказати шлях щодо даного документа, тобто документ/файл, що включається, повинен знаходитися або в тому ж каталозі, що і даний документ, або каталогами нижче/вище (some_catalog/, ../some_catalog).
virtual — можна вказувати як відносний (як у випадку з файлом), так і абсолютний шлях (може містити /some_catolog або../some_catalog).

include дозволяє включати результат роботи cgi скриптів, а також звертатися до них із якимсь заданим рядком запиту. Наприклад,

Встановлює значення будь-якої змінної. Змінна оголошується з допомогою атрибута var, та її значення задається з допомогою атрибута value.

змінна a матиме значення variable.
А можна й так:

Змінна a дорівнюватиме varia$(c)
Для того, щоб підставити змінну потрібно її укласти в фігурні дужки і перед цим поставити $. Якщо ж ви хочете щоб знак долара ($) відображався просто як символ, і не позначав змінну, то поставте перед ним слєш ()

echo

виводить значення змінної, вказаної в атрибуті var.

тобто замість цього коду вставляється значення змінної a

Приклади використання SSI.

Заголовок:<!--#echo var="title" --> "> , html"> !}

Тіло документа



Як ви змогли переконатися з цього прикладу, користуватися ssi не так вже й важко, і навіть дуже корисно.

Технічні аспекти використання SSI.

Варто кілька слів сказати про технічне забезпечення, яке потрібне для використання ssi. Якщо ви просто створите файл на своєму локальному диску з коректними ssi командами і відкриєте його у вашому браузері, то ніяких включень не відбудеться, тому всі вирази типуДля браузера є чистої води коментарі. Так звані "включення" відбуваються ще на стадії обробки документа сервером, перш ніж надіслати його користувачеві. У разі такого етапу (обробка документа сервером) взагалі немає. Так ось для того, щоб ви змогли повністю відчути всі переваги ssi на своєму локальному комп'ютері, вам потрібен "домашній" web-сервер.
І ось що: не кожен провайдер, що надає хостинг, підтримує ssi. Зазвичай, це проблема безкоштовних хостингів. Але й деякі з них, якщо вже дозволяють використовувати ssi, то вимагають за це якусь плату, наприклад, розміщення реклами на сайті.