echter 404-Browserfehler per http-Header

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

echter 404-Browserfehler per http-Header

Beitrag von Dungeonwatcher »

Hi! 8)

Ich hätte da einen Vorschlag für einen neuen Mod:

Seit Wochen wühlt sich Google durch mein Forum, was ja auch sehr löblich ist, nur leider hat Google teilweise eine wirre Vorstellung von den zu besuchenden Links und ruft z.B. viewtopic.php?t99 statt viewtopic.php?t=99 auf.

phpBB bringt in so einem Fall ja eine Seite mit dem Text: "Das gewählte Thema oder der Beitrag existiert nicht." bzw. "Das ausgewählte Forum existiert nicht.". Wie bekomme ich nun einen echten 404-Browserfehler in http-Header?
Google hat geschrieben:Wir akzeptieren Ihre Anforderung zum Entfernen nur, wenn die Seite in einem echten 404-Browserfehler über die http-Header zurückgibt. Stellen Sie sicher, dass Sie einen echten 404-Browserfehler zurückgeben, auch wenn Sie einen benutzerfreundlicheren Abschnitt "body" der HTML-Seite für Ihre Besucher anzeigen. Eine Seite, die "Datei nicht gefunden" zurückgibt, wenn die http-Header nach wie vor den Statuscode 200 oder einen normalen Code zurückgeben, ist in diesem Fall nicht hilfreich.
Andererseits wäre ein weiterleiten auf die index.php auch nicht verkeht.

Nur wie stelle ich das an? Es gibt keine .htaccess und auch der Server selber kann/soll dies nicht tun.

Diese o.g. Meldung wird ja durch die viewforum.php bzw. viewtopic.php angestossen und in der functions.php erstellt. Jetzt muss diese Meldung quasi abgefangen und der Standard Header ergänzt oder ersetzt werden.

Wer traut sich diese Aufgabe zu und baut diesen Mod? 8)

Bye/2
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

öffne viewtopic.php

suche:

Code: Alles auswählen

if (!$topic_id && !$post_id)
{
	message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
ersetze mit:

Code: Alles auswählen

if (!$topic_id && !$post_id)
{
	header("HTTP/1.1 404 Not Found");
         redirect(append_sid('index.' . $phpEx );
}
suche:

Code: Alles auswählen

if ( !($forum_topic_data = $db->sql_fetchrow($result)) )
{
	message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
ersetze mit:

Code: Alles auswählen

if ( !($forum_topic_data = $db->sql_fetchrow($result)) )
{
	header("HTTP/1.1 404 Not Found");
         redirect(append_sid('index.' . $phpEx));
}
öffne viewforum.php

suche:

Code: Alles auswählen

else
{
	message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}
ersetze mit:

Code: Alles auswählen

else
{
	header("HTTP/1.1 404 Not Found");
         redirect(append_sid('index.' . $phpEx));
}
suche:

Code: Alles auswählen

if ( !($forum_row = $db->sql_fetchrow($result)) )
{
	message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}
ersetze mit:

Code: Alles auswählen

if ( !($forum_row = $db->sql_fetchrow($result)) )
{
	header("HTTP/1.1 404 Not Found");
         redirect(append_sid('index.' . $phpEx));
}
Das dürfte an sich eigentlich reichen.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Hui, das ging ja fix. :)

Ein kleiner Fehler hat sich hier eingeschlichen:

Code: Alles auswählen

if (!$topic_id && !$post_id)
{
	header("HTTP/1.1 404 Not Found");
         redirect(append_sid('index.' . $phpEx );
}
Hier fehlt in der vorletzten Reihe noch ein abschliessendes ")". Dann funktioniert die Weiterleitung perfekt. Supergroßen DANK :)

Wie kann ich jetzt noch testen ob der passende Headereintrag auch versendet wird/wurde?

Nachtrag:

Kaum war dies im Forum eingetragen tauchte auch schon Google auf und wurde erfolgreich auf die index.php umgeleitet. <riesig freu> 8)
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

http://www.andyhoppe.com/software/http- ... header.htm
Damit gucke ich mir immer den HTTP Header an, geht relativ fix.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Jou, die Seite merke ich mir.

Der test ergab folgendes:
Folgende HTTP-Header wurden vom Server gesendet:
(Bei Klick auf eine Zeile springt der Browser auf die Erklärung dazu.)

1. HTTP/1.0 301
2. Content-type: text/html; charset=iso-8859-1
3. Location: http://dungeon-bbs.homeip.net/forum/index.php
Nun ist die 301 ja das Ergebnis der Umleitung. Das würde bedeuten das die 404 garnicht gesendet oder ignoriert wurde. Dann werde ich die die 404 in den Änderungen mal in 301 ändern.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

ändere übermal das:

Code: Alles auswählen

   header("HTTP/1.1 404 Not Found"); 
         redirect(append_sid('index.' . $phpEx));
in das um:

Code: Alles auswählen

header("HTTP/1.1 404 Not Found"); 
header("Location: ".$phpbb_root_path."index.".$phpEx);
Das dürfte den Fehler beseitigen.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Neee, es bleibt beim 301. Das dürfte aber wohl daran liegen, das ja gleich die index.php gesendet wird und da wäre der 301 ja wohl auch korrekt, oder?
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Nein da wäre 200 ok.
Hm..

tausch mal den Block gegen den hier aus:

Code: Alles auswählen

header("Location: ".$phpbb_root_path."index.".$phpEx);
header("HTTP/1.0 404 Not Found");
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

fanrpg hat geschrieben:Nein da wäre 200 ok.
Hm..
Es bleibt beim 301. :roll:
dennist
Mitglied
Beiträge: 140
Registriert: 07.07.2005 21:51
Wohnort: Dortmund

Beitrag von dennist »

Hallo,

ich habe ein ähnliches Problem.

Um eine Seite aus dem google cache und den Suchergebnissen zu bekommen muss ein 404 Fehlercode erzeugt werden.

Für mich wäre es wirklich wichtig, da sonst rechtliche Schwierigkeiten drohen.

Die Frage klingt zwar komische aber:
Wie bekomme ich diesen 404 Fehler hin?

Tausend Dank an den, der mir helfen kann.


Gruß Dennis
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“