Lecserélt weboldal archiválása

Egy-egy oldal teljes frissítésénél (például új CMS rendszerbe történő átvitelekor) hasznos lehet, ha a korábbi változatról a lecserélés pillanatában készítünk egy „pillanatfelvételt” és azt megőrizzük. Ebben a tutorialban ehhez adok néhány tippet.

A napokban élesítettünk egy oldalt: a korábbi fejlesztő félig statikus, félig dinamikus lapokból álló káoszt teremtett az évek során, úgyhogy egy CMS-re cseréltük az oldal motorját, importáltuk a tartalmakat stb. Elkészült az új lap, élesítés után a megrendelő kérte, hogy a régi oldal az ő számára legyen továbbra is elérhető. Mi sem egyszerűbb, a korábbi tartalmat visszatöltöttem egy külön mappába, amitől persze az egész oldal használhatatlanná vált: az oldal néhol relatív, néhol abszolút url-eket tartalmazott, néhány helyen domainnel együtt, néhány helyen nem.

Mivel úgyis csak pillanatkép kell, az aktív komponensek kivehetőek a rendszerből, bőven elég statikus oldalakat összelinkelve fenntartani a régi állapotot. Erre a célra is tökéletesen alkalmas a HTTrack Website Copier nevű, nyílt forrású alkalmazás. A tutorial során feltételezem, hogy a tutorial.hu domain tartalmát akarjuk lementeni.

Akár a telepítős, akár a telepítő nélküli változatot töltjük le, indítsuk el a programot. A megjelenő ablakon kattintsunk a tovább gombra. Nevezzük el a projektünket, legyen a neve mondjuk Tutorial.hu, adjuk meg a letöltési célt (vagy hagyjuk az alapértéken), majd kattinstunk a Tovább gombra. A Web Addresses: (URL) résznél írjuk be, hogy http://www.tutorial.hu. A Set Options gombra kattintva sok beállítást adhatunk meg, a default értékekkel mindennek működnie kell. Ha készen vagyunk, kattintsunk a Tovább gombra, a következő lapon pedig kattintsunk a Befejezés gombra.

Ekkor az alkalmazás elkezdi letölteni a teljes domain tartalmát, majd rekurzívan haladva a fájlokon a kiinduló állományokból (amiket a Web addresses-nél megadtunk) elérhető összes fájlt letölti. A program nagy előnye, hogy a HTML-en kívül a CSS stíluslapokat is ellenőrzi, így elég nagy valószínűséggel tényleg teljes pillanatképet készít az oldalról: ráadásul minden hivatkozást relatívvá változtat, így már a fájlmásolással megcsinálható a pillanatkép. Fontos azonban megjegyezni, hogy ha az oldal szerkezetét, mint gráfot nézzük, akkor csak a megadott kiinduló fájl(ok)ból a gráfban elérhető oldalakat menti le: ha nincs hivatkozás pl. a titkos.html fájlra, akkor az nem kerül mentésre! Vagyis ha oldalunk két egymástól teljesen elkülönülő részből áll, mindkét részhez adjunk meg egy-egy címet.

A kiindulási problémára visszatérve: mi van, ha már az új oldal foglalja el a domaint, amelyről utólag szükség lenne a pillanatképre? Egy lehetséges megoldás, hogy egy külön webszerverre (a példában a saját gépen futó szervert feltételezek) töltjük fel a régi tartalmat, majd egy kis trükkel rávesszük a saját rendszerünket, hogy „rossz” címen keresse az oldalt.

Másoljuk be a régi oldal fájljait a lokális webszerver DocumentRoot-jába, majd a hosts fájl-t (Windows ME és azelőtti rendszereknél C:\Windows mappában, Windows NT alapú rendszerknél a C:\Windows\System32\Drivers\etc mappában, Vista és 7 alatt ez a mappa valamiért nem látszik, de a cd utasítással bele tudunk ugrani) szövegszerkesztővel megnyitva vigyünk fel a fájl végére egy új sort:

127.0.0.1 tutorial.hu

Ezután szükség lehet a DNS gyorsítótár ürítésére, hogy biztosan rendben legyen az átirányítás, úgyhogy paranacssorból (cmd.exe) adjuk ki a ipconfig /flushdns parancsot. Ezután ellenőrizhetjük, hogy minden jól csináltunk-e, ha az újraindított (a böngésző is saját DNS cache-t tart(hat) fenn) böngészőben beírjuk a weboldal címét. Ha az archiválandó oldal jött be, akkor mindent jól csináltunk.

Ezután már rá is ereszthetjük a HTTrack-et az oldalra, az már a saját változatot fogja betölteni, és el is készültünk a pillantképpel. Ha nagyon profi megoldást akarunk, módosíthatjuk az új rendszert úgy, hogy ha a kért tartalom nem érhető el, akkor elsőként ellenőrizze, hogy a tartalom átkerült-e az új rendszerbe csak valami más cím alatt, vagy az archiv változatban elérhető volt-e az adott cím, és ha igen, egy 302 – Moved permanently-vel átdobhatjuk a megfelelő oldalra. Egy kis htaccess trükközéssel az Apache-t rá lehet bírni, hogy az archive mappában minden fájlba szúrjon be egy sort, amely felhívja a látogató figyelmét arra, hogy most egy archív változatot böngész. (egy lehetséges megoldás: a html fájlokat is küldjük át a php feldolgozón, az archiv mappában állítsunk be a PHP auto_prepend_file direktívával egy scriptet, ami elindítja a kimenet pufferelést (ob_start) és az auto_append_file direktívával egy másikat, ami lekéri a puffer tartalmát (ob_get_end), majd egy RegExp-el beszúr a body nyitótag után egy div-et benne a megfelelő szöveggel)

3 HOZZÁSZÓLÁS

  1. nem egyszerűbb, ha egyszerűen ftp-ről lementem az oldalhoz tartozó összes fájlt a vinyómra?

  2. B.Cs.: Mint ahogyan BlackY is írta fentebb, nem jó, mivel ha elérhetővé akarod tenni egy másik címen az oldalt és néhány hivatkozás domain névvel együtt van (tehát nem annyiból áll a hivatkozás, hogy valami.html, hanem hxxp://domain/valami.html), akkor szépen nekiállhatsz és minden fájl-t/bejegyzést, stb módosíthatsz kézzel… Ez egy 100-200 bejegyzést tartalmazó oldalnál szinte az örökkévalóságig tart :-) Szóval a kérdésedre a válasz az, hogy ez nem 100%-os megoldás, kivéve ha az oldalon a hivatkozások jók és eltűrik a domain változtatást.

  3. Nem hülyeség! Én egy pár oldalt le is mentettem! Akkor ha mondjuk a http://pelda.hu/index.html oldalon hivatkoznak a vmi.html-re, így=”http://pelda.hu/vmi.html”, akkor lementem és átköltöztetem, ugyanúgy működni fog és átállnak a linkek?

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét