ugrás a tartalomhoz

404es státusz beállítása.

lepke · 2008. Feb. 24. (V), 11.50
Üdv!
Megújítottam az oldalt, egy statikus oldal kapott dinamikus motort. Itt érhetitek el:
katolikus-traditio.hu
A gógölben szép számú (kb100) olyan indexelt oldal van amely már nem elérhető a szerveren. Ezt a webmester toolsal mind kilőni igen idegtépő lenne(ráadásul már egyszer meg is tettem, csak akkor sem jött össze a 404, robot.txt meg nem használtam). De ugye az sem jó hogy ezek még élnek.
No, én a 404-es hibaüzenet az index.php?hiba oldalára irányítom.
Értelem szerűen ha kap $_get["hiba"] változót, akkor a 404 tartalmát tölti be. Ezt úgy oldom meg, hogyha pl. htm kiterjesztésű a request uri akkor a http://katolikus-traditio.hu/dokumentum/ oldalt includeolom be, mert a dokumentumok voltak ilyen kiterjesztésűek. Html kiterjesztést pedig a menüpontok kaptak, azok meg szinte aradtak, így töltöm be mindig a megfelelő oldalt.
A bibi csak az, hogy így a szerver státuszt 200ra állítja. A google webmester tools is mondja hogy a 404es hibaoldalnak 200-as státsza va. Hogy tudom ezt a problémát megoldalni?
if (isset($_get["hiba"])) {
header("HTTP/1.1 404 not found");
}
ezzel próbálkoztam.
De hova illesszem be? A head tag-be, vagy az oldal legelejébe? Illetve ennyi elég? Illetve amit beírtam az legalább már helyes?
Másik, hogy ez seo szempontból mennyire szükséges, és mennyire jó ötlet?
 
1

nem $_get hanem $_GET

janoszen · 2008. Feb. 24. (V), 19.10
Hát szomorú leszel. Egyrészt nem $_get hanem $_GET, másrészt nem értem, hogy ki állítja be a hiba nevű változót. Szerintem, olvass utána a HTTP-nek mint olyan, mert így nagyon kavar a dolog.

A header kiküldésről annyit, hogy a futás legelején kell megtörténnie. Ha van előtte valami kimenet, akár egy szóköz vagy UTF-8 BOM karakterek, akkor már nem fog menni.
2

Output Buffer

randomly · 2008. Feb. 24. (V), 21.21
Szia!

Előttem már írták, nem szabad semminek kimenni-e a 4004 header előtt.
Tehát meg kell állítsd a kimenetet.
Ez az ob_start() függvény.
Utána bűvészkedhetsz...és ha 404 -et kell adnod akkor mehet a header és az include.

De miért nem irányítod az újra?

if (strpos($_SERVER['REQUEST_URI'], ".html")) {
  header("HTTP/1.0 301 Moved Permanently");
  header("Status: 301 Moved Permanently", TRUE, 301);
  $old_uri = $_SERVER['REQUEST_URI'];
  $new_uri = str_replace(".html", ".php", "$old_uri");
  header("Location: http://www.".$_SERVER['SERVER_NAME'].$new_uri);
}
rand
3

Milyen cél?

janoszen · 2008. Feb. 25. (H), 08.12
Ez a kód milyen célt szeretne szolgálni? A www biztos nem jó úgy, mert azonos hostra szeretnéd dobni, nem www.-el prefixáltra, ugye?

Én személy szerint utálom azokat az oldalakat, amelyek a 404-es oldalakat átirányítják valahova, mert a címsorból eltűnik az eredeti URL és ha csak elgépeltem valamit, az elég idegesítő tud lenni. Mellesleg a Google-n sem feltétlenül segítesz, mert a Sitemaps továbbra is panaszkodni fog.