Hogyan tudom megoldani a saját weboldalam programjában, hogy egy másik (idegen) oldalra történő átirányítás csak akkor történjen meg, ha az a másik (idegen) oldal elérhető?
Például, ha az állásajánlatokkal foglalkozó oldalamon szeretnék elhelyezni kifelé mutató linkeket más állásportálokra, azokon meghirdetett konkrét munkaajánlatokra.
Mindezt úgy szeretném megoldani, ha az adott állásportál, vagy annak az adott állásajánlatot tartalmazó aloldala nem elérhető (akár a portál eseti működési problémája miatt, akár azért mert már nem aktuális az az ajánlat), akkor egy másik -szintén az előzőek szerint megvizsgált- linkre irányítanám a látogatót.
Mit javasolnátok?
PHP segítségével le tudod kérni az oldal tartalmát és meg tudod vizsgálni, hogy megfelel-e bizonyos kritériumoknak. Viszont ez:
- Egyrészt elég erőforrás igényes a szerverre nézve. Persze cache-elve az eredményeket, és pl. óránként megvizsgálva a linkeket lehet azért finomítani a dolgon. Az eseti kieséseket így nem fogja ugyan kiküszöbölni, de szerintem az felesleges is. (Hadd legyen ott a link, esetleg nyom majd rá egy refresht, vagy berakja a könyvjelzők közé és megnézi később.)
- Másrészt nem elég ugye az oldal tartalmát csak úgy összehasonlítani, hiszen történhetnek az oldalon változások, amitől az adott oldal ugyanaz marad lényegi szempontból, mégis más a tartalma. (Pl. javítottak benne egy helyesírási hibát, kommentált valaki, ha pl. az oldalon van névnapkijelző, akkor az is változhat, stb…) Tehát minden egyes honlap esetén ki kell dolgozni az ellenőrzés kritériumait, hogy mikor tekinthető élőnek az adott aloldal, és mikor szűnt meg vagy vált aktualitását vesztettnek az adott aloldal.
Ritkán csinálnak ilyen eljárást a honlapok. Érdemes elgondolkodni azon, hogy nem bonyolítottad-e túl a kérdést, valóban szükség van-e a te megoldásodra, jelent-e bármiféle előnyt a dolog bármilyen szempontból, ami kompenzálja a szerver leterheltségét, a honlap kódjának összetettebbé válását (ami mindig hibalehetőségeket is rejt magába).
Köszönöm a hozzászólásokat.
2xSü:
Nekem gyakorlatilag elégséges csak azt vizsgálni, hogy az adott idegen oldal elérhető-e.
Ha igen, akkor átirányítanám oda a látogatót, ha nem, akkor megvizsgálnám a listámban szereplő következő idegen weboldalt, hogy az elérhető-e.
Tenném ezt abból kiindulva, hogy igen kicsi az esélye annak, hogy egyazon időpontban minden releváns kifelé mutató linkem hibás, elérhetetlen oldalra mutatna.
Azaz ha az idegen oldal működik és a linkelt tartalom ott elérhető, akkor számomra már mindegy, hogy egyéb kritériumoknak megfelel-e az az oldal. Az a fontos, hogy a látogató ne egy pl. hibaoldalt kapjon a kattintására válaszul.
Csak néhány ilyen vizsgálandó oldalról lenne szó, és ideális esetben a látogató kattintásának pillanatában kellene megtörténnie a vizsgálatnak. Hogy biztosan ne irányítsam olyan oldalra, ami nem elérhető.
2-es válaszoló:
Amit írsz, azt értem.
Azonban azt, hogy ez miként válasz az én kérdésemre, azt sajnos nem sikerült megfejtenem.
Elárulnád?
Az oldalak többsége ma már 99,9 sőt 99,99%-os rendelkezésre állással működik. Felesleges vizsgálni az oldalak elérhetőségét, hiszen kb 0-hoz konvergál az esélye annak, hogy egy oldal pont akkor elérhetetlen, mikor egy látogatód éppen rákattint.
Olyan oldalról linkelni, ami rosszul van összerakva és hol elérhető, hol nem, arról meg nem érdemes linkelni szerintem, esetleg a saját szervereden érdemes másolatot készíteni belőle.
Az viszont nagyon zavaró, ha letöltök egy oldalt, találok rajta egy linket, megjegyzem, hogy „majd otthon megnézem” és otthon meg nem látszik a link. Vagy ugye hiába ellenőrzöd az oldal elérhetőségét az oldalad letöltése pillanatában, ha az illető letölti a te oldaladat, aztán válaszol egy MSN üzenetre, SMS-re, esetleg hoz egy kávét, majd utána kattint a linkedre. Ezt nem tudod kivédeni.
Szerintem teljesen felesleges és nem életszerű, amit csinálni akarsz, ellenben nem is működik tökéletesen, és a szervereden felesleges adatforgalmat generál, hiszen minden egyes linket minden egyes megjelenítésnél le kell tölteni. Ehhez hozzájön ugye az is, hogy egy-egy oldalletöltésnél akár hosszú várakozás is lehet, tehát egy tucat linknél akár egy perces lassulást is okozhat az oldalletöltésben. Persze lehet rövidíteni a dolgot, de akkor az ellenőrzésen fennakadnak azok az oldalak is, amelyek működnek, csak kicsit lassabban szolgálják ki a látogatókat. Arra sincs 100%-os megoldás, ha az oldalon lekezelik a hibát egy egyedi 404-es hibaoldallal, úgy, hogy 200-as HTTP státuszt küld közben. Elméletileg a PHP-ban a get_headers() függvénnyel le lehet kérni az adott URL lekérésének státuszát, de ez sem annyira egyszerű, hiszen le kell kezelni az átirányításokat is. Sőt ha nagyon belemegyünk, akkor a HTML meta tag-ben illetve javascriptben történő átirányításokat is le kellene kezelni, ami szinte már egy HTML és Javascript értelmezőt kíván.
Kicsit a megoldásod arra hasonlít, mikor az uzsonnás dobozod kinyitását két kulcsos rendszerrel, 16 számjegyű biztonsági kóddal és hangazonosítóval tennéd lehetővé. Ágyúval verébre…
Ha nagyon nem akarod elveszíteni a látogatót, akkor több megoldás van. A legegyszerűbb, ha a linkeket úgy teszed be, hogy azok új ablakban nyíljanak meg. Esetleg egy keretes oldalt nyitsz meg, ahol a kereten belül jelenik meg az oldal.
Üdv!
Szerintem a kérdező csak arra kíváncsi, hogy az oldalán kitett link halott link vagy sem. Nem a fő oldal elérhetősége a fontos számára. Hanem pl fent van egy kép valakinek az oldalán. Erre van egy közvetlen link. Ha konkrétan ezt a linket teszi be az oldalára és közben a webmester törli a képet akkor egy 404-es hibaüzenetet kap. Szerintem ezt akarja elkerülni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!