Початкова сторінка

Микола Жарких (Київ)

Персональний сайт

?

Смересилки

Говорячи про адресацію документів у Смереці, перш за все слід виразно розрізнити безпосередні (або прямі) посилання на інші документи та абстраговані посилання, або смересилки (смересилка – іменник жіночого роду, утворений від Smereka reference; отже, «немає смересилки», «надаємо значення смересилці» і т.д.)

Якщо треба зробити посилання на інший сайт, немає іншого виходу, як використовувати прямі посилання : <a href="http://example.com">Exapmle</a>.

Але якщо треба послатись на інший документ того самого сайту (на іншу вершину дерева Смереки), можна використовувати як прямі посилання, так і смересилки.

Нехай наше дерево документів має вигляд (в дужках – іди вершин) :

ThePope [1]

Was [2]

MoscowPatriarchate [10]

Is [3]

Autocefalic [11]

Have [4]

TheDog [12]

WillBe [5]

Atheist [13]

Тепер ми можемо вживати в документах Смереки абсолютні посилання :

<a href="http://example.com/index.php?Node=12">Pope and Dog story</a>

(з використанням числової адресації);

<a href="http://example.com/index.php?Path=ThePope/Have/TheDog">Pope and Dog story</a>

(з використанням символьної адресації);

<a href="http://example.com/ThePope/Have/TheDog">Pope and Dog story</a>

(з використанням віртуальної адресації);

Всі ці посилання є абсолютними в тому сенсі, що Смерека нічого не буде з ними робити і включить в текст кінцевого HTML документу такими, як вони записані.

Замість цих посилань можна використовувати смересилку вигляду :

<Smereka Func="Smeref" NodeId="12">Pope and Dog story</Smereka>

Цей код задає смеретег, або поле підстановки, яке транслюється Смерекою в одну з наведених вище абсолютних форм. Яку саме форму згенерує Смерека – залежить від контексту. В режимі редагування Смерека скрізь використовує числову адресацію, яка є внутрішнім стандартом Смереки. Що ж стосується режиму перегляду, призначеного для зовнішніх користувачів, то форма посилання визначається параметром $URLMode у файлі customsettings.php. Цей параметр може мати значення 'ById', 'ByPath', 'Virtual'.

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

Смересилки використовуються не тільки у формі полів підстановки; Смерека генерує їх, коли формує такі компоненти, як навігатори чи агрегатори. Отже, їхня поведінка теж залежить від параметра $URLMode.

Віртуальна адресація

Цей спосіб адресації буде працювати тільки спільно з відповідно налаштованими правилами перезапису адрес (mod_rewrite в Apache). Слід знати, що числові та символьні адреси залишаються дійсними і при віртуальній адресації.

Віртуальна адресація накладає дуже невеликі обмеження на конфігурацію фізичних каталогів веб-сайта :

1. В кореневому каталозі не повинно бути інших файлів, окрім index.php та .htaccess. Точніше, інші файли можуть бути, але вони не будуть доступні через http протокол через дію перезапису адрес.

2. В кореневому каталозі слід створити каталог files, в якому можна розміщувати різні файли, які мають бути доступними через http протокол (в цьому каталозі перезапис адрес не працює, якщо тільки не зроблено спеціальні налаштування).

3. В дереві документів не можна давати символьне ім’я files вершинам, які безпосередньо підпорядковані кореневій вершині домена або субдомена. (Символьні імена чутливі до регістру, тому Files є допустимим; але ми ж не хочемо самі створювати плутанину…)

За таких умов трансляція зовнішніх віртуальних адрес виглядає досить просто :

http://example.com/en/ThePope/Have/TheDog

транслюється в :

http://example.com/index.php?Lang=en&Path=ThePope/Have/TheDog

Адреса :

http://example.com/ThePope/Have/TheDog

транслюється в :

http://example.com/index.php?Lang=uk&Path=ThePope/Have/TheDog

В останньому випадку, коли віртуальний каталог нульового рівня не задає мовну версію, вживається мова Смереки за умовчанням (типово це українська мова).

Слід пам’ятати, що для Смереки немає різниці між файлом і каталогом : є вершина, яка одночасно володіє інформацією, як файл, і підпорядкованими вершинами, як каталог. Тому відома проблема «останньої косої риски (/)» для неї не актуальна. Адреси вигляду http://example.com/ThePope/Have/TheDog (де TheDog є неначе файлом) і http://example.com/ThePope/Have/TheDog/ (де TheDog є неначе каталогом) обробляються однаково і вказують на одну й ту саму вершину. Простою мовою, Смерека ігнорує останню косу риску в URL.

Розширення за умовчанням

Смерека для своєї роботи не потребує, щоб символьне ім’я вершини містило розширення (таке як TheDog.html чи TheDog.php). Але такі розширення можуть використовуватись.

Якщо розширення задано безпосередньо у полі символьного імені вершини, воно завжди буде відображатись у шляху. Відповідно адреса такої сторінки повинна містити це розширення.

Якщо поле символьного імені не містить розширення, то Смерека може допасувати його сама, щоб зробити для читача вигляд, що він читає (наприклад) статичний .html файл.

Для цього треба задати змінну $DefaultExt у файлі customsettings.php, наприклад :

$DefaultExt = 'html';

Це розширення за умовчанням автоматично приєднується до імені термінальної вершини, а при інтерпретації шляху відкидається. Таким чином, якщо символьне ім’я вершини – TheDog (без розширення), то адреси http://example.com/ThePope/Have/TheDog і http://example.com/ThePope/Have/TheDog.html будуть вказувати на один документ. Звичайно, краще дотримуватись певної дисципліни, і якщо вживати розширення за умовчанням, то вживати його скрізь, щоб не плутати пошукові машини мнимим подвоєнням документів.