Nuolat vystomuose interneto projektuose karts nuo karto daromi atnaujinimai. Tai failų struktūra pakeičiama, tai duomenų bazės schemoje sukuriama kokia nauja lentelė, tai masiškai keičiami duomenys bazėje. Paprastesniu atveju atnaujinami HTML šablonai ir stilius. Dažniausiai sudėtingesnis atnaujinimas vyksta pusvalandį ar net valandą ir jį vykdant vietoj standartinės svetainės turi būti rodomas puslapis „Svetainė atnaujinama“, kad naudotojai nematytų brokuoto vaizdo bei kad nesugadintų duomenų įrašinėdami ką į duomenų bazę keitimų proceso eigoje.
Gera praktika Apache tarnybinės stoties naudotojams yra tokiems atvejams turėti porą Apache nustatymų failų, kurie būtų pakaitom aktyvuojami, priklausomai, ar svetainė pasiekiama visiems, ar yra atnaujinimo stadijoje. Kažkada Tomas mestelėjo idėją, kad atnaujinimo atvejams konfigūraciją galima nusistatyti taip, kad kiti matytų puslapį „Svetainė atnaujinama“, o pats – galėtum naršyt visą turinį ir testuot, ar viskas veikia teisingai. Taip vienąkart ir pasireguliavau.
Apache leidžia nurodyti tarnybinės stoties konfigūraciją katalogo lygyje, naudojant .htaccess failus. Aš svarbiems projektams šakniniame (angl. root) svetainės kataloge turiu failus .htaccess_live ir .htaccess_under_construction su skirtingais nustatymais. Prireikus pakeisti būseną, konfigūraciją perkopijuoju į .htaccess failiuką:
cp .htaccess_under_construction .htaccess
ar
cp .htaccess_live .htaccess
Apache konfigūracijos failiuko .htaccess_live turinys yra maždaug toks:
# index.html ir index.php – standartiniai katalogą atvaizduojantys failai
DirectoryIndex index.html index.php
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Jei puslapis pasiektas example.com adresu, nukreipiam užklausą į www.example.com
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
</ifmodule>
Tuo tarpu .htaccess_under_construction turinys toks:
# index.html ir index.php – standartiniai katalogą atvaizduojantys failai
DirectoryIndex index.html index.php
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Jei puslapis pasiektas example.com adresu, nukreipiam užklausą į www.example.com
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
# jei lankytojo IP adresas nėra 1.2.3.4 ir užklausiamas ne media katalogas,
# tuomet nukreipk užklausą į failą temporarily-offline.html
RewriteCond %{REMOTE_HOST} !^1\.2\.3\.4
RewriteCond %{REQUEST_URI} !/temporary-offline\.html$
RewriteCond %{REQUEST_URI} !^/media
RewriteRule .* /temporary-offline.html [R=302,L]
</ifmodule>
Šiose konfigūracijose naudojamas mod_rewrite modulis. RewriteCond nurodo sąlygas, kuriomis turi būti vykdomas užklausos nukreipimas per RewriteRule. Parametrai laužtiniuose skliaustuose reiškia štai ką:
- NC (no case) – nekreipti dėmesio, ar naudojamos didžiosios, ar mažosios raidės.
- R=301 – užklausą nukreipti su kodu 301 „Pastovus nukreipimas“.
- R=302 – užklausą nukreipti su kodu 302 „Laikinai perkelta“.
- L (last rule) – paskutinė taisyklė, tad nebekreipti dėmesio į toliau einančias taisykles.
Savo IP adresą galima sužinoti vienoj iš daugelio What’s My IP tarnybų.
Kaip techniškai nustatyti laikinąjį vaizdelį „Svetainė atnaujinama“ dabar jau aišku. Kitas dalykas, kuris mano manymu yra ganėtinai svarbus, yra rodyti tinkamą laikinąjį puslapį. Man asmeniškai patinka tokie klaidų ir sisteminių pranešimų puslapiai, kurie vaizdžiai ir netechniškai man parodo, kame problema, kaip pavyzdžiui twitter.com, arba tokie, kurie papildomai pateikia kokį filmuką arba ką nors interaktyvaus, kad užimtų mane, kol vyksta atnaujinimo darbai.






