Hogyan költöztesd át régi weboldalad úgy, hogy ne veszíts látogatókat

Szerző: Borsos Albert 2015-04-20 11:18 Szólj hozzá!

Vagy hogyan frissítsd régi weboldalad egy újra, aminek más az URL struktúrája, mint a réginek. Ez a legfontosabb része az egész műveletnek, ha lecseréled weboldalad, webáruházad vagy egy másik webcímre költözöl. Rengeteg apró buktató van benne, amivel duplikált tartalmakat generálhatsz, így a Google biztosan megbüntet egy hátrasorolással. Illetve a másik veszély ami fennáll, hogy a régi URL-ekre mutató hivatkozások nem fognak működni, mert az a link már nem él. Ezáltal csökken a látogatottság és a Google sem fogja figyelembe venni a régi linkeket.

Remélem a bevezetőből következtettél arra, hogy ez tényleg fontos dolog. Ha nem, akkor itt egy példa: Van egy webáruházad 4000 termékkel. Úgy gondolod, hogy a webshopod már kicsit elavult, fejleszteni kell. Sok esetben az URL-ek sem keresőbarátak, ezért új URL struktúrát kell kialakítani. Ha nem sikerül mind a 4000 terméket átirányítani, pontosan ugyanannak a terméknek az új oldalára, akkor az azt fogja okozni, amit a bevezetőben leírtam.

Senki nem szeretné ezt, mert ebbe akár egy vállakozás tönkre is mehet. Az alábbi leírásban megmutatom, hogy hogyan kell pontosan eljárni, ha lecseréled a weboldalad.

Tudnod kell, hogy ezt én már rengetegszer végigcsináltam, a saját weboldalamon is. Először scdesign.hu-ként futott a weblapom, majd weboldalkeszites.scdesign.hu, majd vettem egy 3 betűs domainnevet és átirányítottam a weboldal-keszites.scn.hu-ra és most a borsosalbert.hu ami él.

Ez nem is lett volna olyan nehéz, de minden új domainnél új URL struktúrát találtam ki, illetve a menüpontok is módosultak. De a saját példámba nem mennék bele, mert borzalamasan átláthatatlan a 4 weboldal közti átirányítás. Mutatok egy egyszerű példát:

A regiweboldalam.hu és az ujweboldalam.hu a két példa domain-ünk, így néznek ki a jelenlegi URL-ek:

regiweboldalam.hu/termekek/mobiltelefon/nokia/n-kategoria/nokia-n9-1091.html
regiweboldalam.hu/termekek/mobiltelefon/apple/iphone-5-2001.html
regiweboldalam.hu/termekek/tartozek/tolto/nokia-1200-tolto-3100.html

Biztos vagyok benne, hogy ezek nem különálló html fájlok, hanem mondjuk a termekek.php kezeli le és .htaccess fájl irányítja át a megfelelő termékoldalra. Az URL végén a számok a termékek egyedi azonosítószámai. Ez alapján lehet pontosan arra a termékoldalra irányítani, ami az iPhone 5-é. Tehát az iPhone 5 URL-je valójában így néz ki:

regiweboldalam.hu/termekek.php?id=2001

Mindössze a .htaccess segítségével lehet maszkolni az URL-t, így keresőbarát lesz. A feladatunk az, hogy az új URL struktúrának megfelelő címre irányítsuk át a weboldalt. Ezt többféleképpen tehetjük meg.

  1. A regiweboldalam.hu termekek.php-jában mindig a megfelelő alkategória, vagy termékoldal kódjában csinálunk egy 301-es átirányítást PHP segítségével.
  2. A regiweboldalam.hu .htaccess fájljában írunk egy reguláris kifejezést, ami a megfelelő módon irányítja át az új címre.

Átirányítás PHP-val

Ez is jó megoldás lehet, bár kevésbé elegáns, mert bele kell nyúlnod az eredeti PHP kódba. Így ha esetleg vissza akarsz állni a régi rendszerre, akkor amiket hozzáadtál, ki kell törölnöd. Csak akkor ajánlom, ha 1db fájban kezelsz mindent, így az URL alapján 1 fájlban el tudod dönteni, hogy mi az új cím, ahova irányítani kell.

<?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.ujweboldalam.hu/".Links::get_redirect_link($type, $id));
?>

A legjobb megoldás, ha az új URL-t az új weboldaladból egy WebService-en keresztül kéred le attól a metódustól, ami az URL-t generálja. Így ha később módosítod az URL struktúrát, akkor mindig jó címre lesz átirányítva az összes oldalad.

301-es átirányítás .htaccessel

Ha kevés oldalunk van, akkor megtehetjük, hogy egyenként a meglévő URL-eket bemásoljuk a .htaccess fájlba és melléírjuk az új címet, ez így néz ki:

redirect 301 /termekek/mobiltelefon/apple/iphone-5-2001.html http://www.ujweboldalam.hu/mobiltelefon/apple-iphone-5-2001.html

Ez így nagyon szuper, idővel a régi URL-ek megszűnnek a Google indexben és az új URL-ek fognak élni. Ha sok URL-ünk van akkor egy reguláris kifejezést kell írni rá.

De persze ez nem így működik, mert esetünkben a valós cím a termekek.php?id=2001, akkor erre a címre leszünk valójában átirányítva: (a végén szerepel a ?id=2001)

http://www.ujweboldalam.hu/mobiltelefon/apple-iphone-5-2001.html?id=2001

Látszólag a böngészőben az eredmény ugyanaz, de valójában nem. Azért, mert az a cím, amit szerettünk volna, és az ahová valóban kerültünk a Google számára 2 különböző oldal azonos tartalommal. Ezért pedig büntetés jár. 4000 termékoldal esetén mégnagyobb büntetés, ami mégnehezebben korrigálható.

Mi a megoldás?

Sokat próbálgattam, de nem lehet úgy .htaccess-ből megoldani, hogy ne legyen(ek) a végén a GET paraméter(ek). Ezért létre kell hozni az ujweboldalam.hu gyökérmappájában egy redirect.php fájlt, amire átirányítjuk 301-el az összes oldalt. Ez a redirect.php lekezeli a kapott értékeket és átirányítja 301-es típussal a megfelelő aloldalra a ? utáni részek nélkül. (Yii-ben elég egy action-t létrehozni)

Hogyan kezelhetjük le a redirect.php-ban az átirányításokat?

Úgy, hogy a kategóriaoldalak és a termékoldalak azonosítóját átadom a redirect.php-nak az alábbi módon

redirect 301 /termekek/mobiltelefon/apple/iphone-5-2001.html http://www.ujweboldalam.hu/redirect.php?type=termek&id=2001
redirect 301 /termekek/tartozek/autostolto-23.html http://www.ujweboldalam.hu/redirect.php?type=kat&id=23

Így a redirect.php-ban le tudjuk ellenőrizni, hogy milyen GET paramétert kaptunk és annak mi az azonosítója. Ez Yii Framework-ben így néz ki, Yii nélkül kevésbé szépen, de hasonló módon meg lehet oldalni.

public function actionRedirect($type, $id){
    switch($type){
        case 'termek':
            $this->redirect(Links::generate_link('termek', $type));
            break;
        case 'kat':
            $this->redirect(Links::generate_link('kat', $type));
            break;
    }
}

Összefoglaló

  1. Ha ezt nem Te csinálod, akkor mutasd meg a programozódnak, hogy erre figyeljen.
  2. Az átirányítások típusa mindenképp 301 legyen. Alapból 302-es ami azt jelenti, hogy a régi weboldal ugyanúgy bentmarad a Google indexben és ez is duplikációnak fog számítani.
  3. Ha .htaccess-el oldod meg az átirányítást, akkor a redirect.php-ben vagy egy redirect action-ben kezeld le az átirányításokat
  4. Ha PHP-ban irányítod át, akkor ugyanazt az URL generálót kell használnod, mint az új oldaladon, hogy biztosan jó legyen minden.
  5. Weboldalcsere esetén a régi weboldalt hagyd meg eredetiben egy másik mappában, ha esetleg valami közbejönne, akkor gyorsan vissza tudj állni a régi rendszerre.

Ha hasznosnak találtad vagy van hozzáfűzni valód, akkor szólj hozzá!

 
A hozzászólások a Disqus segítségével jöttek létre