Átirányítás: 301-es vagy 302-es státuszkódra van szükségem?
Valamiért ez a kérdés is igen gyakran felmerül. Érdekessége a kérdésnek az, hogy a legtöbb esetben, amikor ez felmerül, akkor 301-es lesz a helyes válasz. Na de nézzük, miről is van szó?
Néha előfordul, hogy egy teljes weboldalt egyik domainről át kell költöztetni egy másikra, vagy egy-egy régi url címet már nem használunk és azt szeretnénk, hogy a felhasználó erre a címre érkezve egy másikra irányítsuk. Tehát akár egy teljes weboldalnak, akár csak egy aloldalnak új címet szeretnénk adni, akkor átirányításra lesz szükségünk.
Amikor a böngészőbe beírunk egy url-t, akkor a szerver válasza két részből áll, egyik amit te is láthatsz a böngészőbe, a másik amit az előbbi előtt küld, az úgynevezett fejléc. Egy átlagos fejléc néhány sorból áll. A böngészőnek, illetve keresőmotoroknak adunk át itt további információkat az url-lel kapcsolatban. Ebből az egyik legfontosabb a státuszkód. Ha minden rendben van, akkor azt mondjuk, hogy 200 OK. Ha a hivatkozás nem található, akkor 404 vagy esetleg 410.
Amennyiben azt üzenjük a böngészőnek, hogy a tartalom egy másik címen található, akkor 301 illetve 302-es kódot adunk ki, és megadjuk hozzá az új címet. A kettő közötti különbség mindössze annyi, hogy megmondhatjuk, hogy hosszútávú átirányításról beszélünk-e vagy csak átmenetiről?
301 jelentése: Oldal véglegesen áthelyezve
302 jelentése: Oldal átmenetileg áthelyezve
Ha például oldalunkat http-ről áttesszük https-re, akkor azt végleges megoldásnak tekintjük, ha a teljes tartalmat áthelyezzük egy másik weboldalra, az is szintén végleges áthelyezés szokott lenni. Ha törlünk egy aloldalt és az arra érkező látogatókat egy másik oldalra szeretnék irányítani szintén végleges megoldásként használjuk. Ezekben az esetekben a 301-es státuszkódok érdemes használni.
Amennyiben véletlenül hamarabb publikáltunk egy címet, és azt szeretnénk, hogy amíg a tartalom nem érvényes, addig más oldalt mutassunk, akkor ez az átirányítás átmeneti és a 302-es státuszkódot érdemes használni.
Átirányítások készítése
Átirányítást többek között az Apache Redirect segítségével hozhatunk létre, egyszerűen megadjuk a .htaccess fájlban a régi és az új url-t:
Redirect 301 /oldpage.html https://www.yoursite.com/newpage.html
A teljes weboldal átirányítása:
Redirect 301 / https://newsite.com/
Vagy PHP segítségével:
header('HTTP/1.1 301 Moved Permanently');
header('Status: 301 Moved Permanently', true, 301);
header('Location: https://www.yoursite.com/newpage.html');
HTML-ből is van lehetőség átirányítani, de ekkor tudni kell, hogy nem 3xx-es átirányításról beszélünk.
<meta http-equiv="refresh" content="0;url=https://newsite.com/" />
Ugyanez igaz JavaScript-re is.
document.location.href = 'https://newsite.com/';
Átirányítás tesztelés
Elsőre azt gondolhatnánk, hogy túl sok tesztelni való itt nem lesz. Beírjuk a böngészőbe a régi címet, és ha átdobott az újra, akkor minden rendben van. Ez így is van. Viszont… a böngészők is komolyan veszik a végleges átirányítás fogalmát. Ha több alkalommal beolvasta a szervertől, hogy az egyik címhez végleges átirányítás tartozik, akkor egy idő után már nem kérdezi ezt le ismét, hanem rögtön az új címre irányítja a felhasználót. Fejlesztés közben ez akár tud kellemetlen is lenni. Ha biztosra akarsz menni, akkor használhatod a Redirect Cheker-t.