302 Found jelentése
SEO szempontból miért rossz a 302-es átirányítás?
A rangsorolásban segítő keresőoptimalizálás meghatározó alkotóeleme a weboldal készítés és a 302-es átirányítás. A weboldalak megtekintése az interneten URL (Uniform Resource Locator, magyarul webcím) címeken keresztül történik. Erre lehet kattintani, a böngésző címsorában jelenik meg. Egyedi azonosító, amivel egy weboldalon belül (domain és kiszolgáló tartomány) elérhető állományra hivatkozik.
Ilyen állomány például az index.php. Ami egy PHP kiterjesztésű programfálj, amit a webszerver fordít le gépi kódra és futtat le. Ez a program a paraméterül kapott adatok alapján sok mindenre képes. A Query String-ben kapott paraméterekkel például különböző oldalakat tekinthetünk meg:
- index.php?oldal=kezdolap
- index.php?oldal=kapcsolat
Ennél jóval többre is képes: több paramétert is át lehet adni. Például azonosítóval ellátva adatbázis bejegyzéseket lehet elérni. Így működnek a webáruházak.
- index.php?oldal=termek&termekid=145
- index.php?oldal=kategoria&kategoriaid=213
Sok esetben URL átirányításokat kell használni. Leggyakoribb eset az, amikor modernizáljuk a webáruházunkat vagy a weboldalunkat. A régi, elavult és sokszor nem keresőbarát webcímeket olvashatóvá formázzuk.
Ugye mennyivel szebb, beszédesebb a keresőbarát webcím?
- Régi: webaruhaz.hu/index.php?oldal=termek&termekid=145
- Új: webaruhaz.hu/kalapok
Ezzel az a baj, hogy a korábbi webcímek látogatói elvésznek. Látogatók jöhetnek könyvjelzőből, e-mail kattintásból, régi linkekről és a Google találati oldaláról. Amikor már nem él a tartalom, 404-es Not Found hibaüzenetet kap a látogató. Ez nem szép, ezért kell átirányítani az új tartalomra.
A böngésző a tartalom betöltése előtt a fejlécet kéri le. A fejléc határozza meg, hogy mi fog ezután történni. Ha 200 OK státuszkóddal tér vissza a lekérdezés, akkor a böngésző gond nélkül megjelenítheti a tartalmat. Ha azonban a tartalom megszűnt vagy új helyre került, akkor azt tudatni kell a böngészővel. Ennek az egyik módja a 302 típusú átirányítás.
A HTTP státuszkódok 3xx csoportja az átirányításoké. Itt a 302 kódszám a Found értéket kapja. Mi ezzel a baj? Régebben nem Found (megtalálva) értéke volt, hanem Moved Temporarily - azaz átmenetileg átmozgatva valahova máshova. Tehát azt jelenti, hogy a régi tartalom átmenetileg új helyre költözött - várhatóan visszakerül idővel a régi helyére. Ezért a keresőrobotoknak újra és újra ellenőrizni kellett, hogy visszaállt-e az eredeti webcím.
Ez nem jó, ha a tartalom végleg új helyre került akkor használjuk a 301 típusú Moved Permanently fejlécet.
Alapvető PHP programozási hibák (ezt haszálja szinte minden CMS)
A CMS rendszerek zömmel PHP nyelven íródtak. Nagyon népszerűek, mert nem kell hozzá sok szaktudás. Szerver oldalon az átirányításhoz a PHP header() funkcióját használjuk átirányításokhoz. A használata egyszerű. A PHP automatikusan a $_GET globális változóba helyezi a Query String értékeket. Ezután az adatbázisból kiolvassuk a keresőbarát webcímet és oda irányítjuk a forgalmat:
if ($_GET['oldal ']== 'termek ' && $_GET['termekid ']== '145') {
header('Location: /kalapok ');
}
Ezzel két probléma is van: a PHP alapbeállítás szerint 302-es kóddal használja a header Location átirányítást. Második probléma, hogy a PHP futása megáll, ha a header-ben Location-t érzékel. Csak a profi webprogramozók tudják, hogy a fejléceket csak akkor lehet módosítani, ha még nincs elküldve tartalom. Elég egy apró hiba - például egy üres változó miatti szerver oldali figyelmeztetés -, és a fejléceket nem lehet elküldeni. Ilyenkor nem is áll meg a program futása, hanem végig halad tovább. Rossz programozás esetén simán lefut a többi kód és fals dolgokhoz vezet.
Ezért MINDIG állítsuk meg a PHP futtatását. Helyes, jól működő programkód:
header('HTTP/1.1 301 Moved Permanently');
header('Location: /kalapok');
exit;