Seite 1 von 1

echten 404-Browserfehler per http-Header...

Verfasst: Fr 17.Mär, 2006 11:15
von Dungeonwatcher
Moin! :cool:

phpBB bringt ja einen eigenen Text wenn z.B. ein Topic nicht mehr existiert. Nun wühlt sich Google seit Wochen 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. Ich würde in so einem Fall gerne einen echten 404-Browserfehler per http-Header zurückgeben lassen.
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.

Bye/2

Verfasst: Fr 17.Mär, 2006 12:36
von oxpus
Öh, nur per .htaccess ist das möglich.
Etwas anderen hinge nur vom Webserver ab.
PHP kann da nicht helfen, denn der Interpreter würde sich ja erst einschalten, wenn eine PHP-Seite aufgerufen wird. Und das dann ohne Fehler...

Verfasst: Fr 17.Mär, 2006 12:57
von dagobert
die datei ist doch vorhanden und wird geladen. es wird nur nicht das topic gefunden.
anstelle des message_die müsste man einen redirect zum index einfügen können...

vielleicht könnte man einfach einen redirect auf wtgtrgwerf.php machen. dann haste nen echten 404 ;)



oder hab ich nen denkfehler ?

Verfasst: Fr 17.Mär, 2006 13:01
von Dungeonwatcher
Hmmm, das leuchtet mir noch nicht ein. phpBB generiert doch selbständig eine Seite mit dem Text: "Das gewählte Thema oder der Beitrag existiert nicht." bzw. "Das ausgewählte Forum existiert nicht.". Da muss es doch möglich sein zusätzlich den Header anzupassen? Google wertet dies dann entsprechend aus:
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.
Ich habe mittlerweile auch einen Tip gefunden, nur leider funktioniert der hier nicht:

öffne includes/functions.php

suche:

Code: Alles auswählen

	switch($msg_code)
	{
		case GENERAL_MESSAGE:
			if ( $msg_title == '' )
			{
danach einfügen:

Code: Alles auswählen

				if ( !$userdata['session_logged_in'] )
				{
  					header("HTTP/1.0 404 Not Found");
  					}
Bei mir gibt es nur diese Fehlermeldung:
PHP Warning: Cannot modify header information - headers already sent by (output started at ...\includes\template.php(127) : eval()'d code:1) in ...\includes\functions.php on line 1079

Verfasst: Fr 17.Mär, 2006 13:52
von oxpus
Dann dürfte auch page_header.php nicht eingebunden werden!

Verfasst: Fr 17.Mär, 2006 13:59
von Dungeonwatcher
Das überzeugt mich immer noch nicht. Es ist sicherlich ziemlich kompliziert, aber das sollte machbar sein. ;)

Verfasst: Fr 17.Mär, 2006 14:04
von oxpus
Also nochmal zum Anfang des Problems:
Wenn eine Seite aufgerufen wird, die nicht vorhanden ist, wie soll dann PHP das feststellen, wenn es noch nicht einmal benutzt wurde?

Hä???

Richtig: Geht nicht!

Also nur per Webserver, der eben die Datei ja sucht und dann (im Falle Apache) per .htaccess eine dort angegebene Error-Page aufruft.
Denn dort wird eine nicht extierende Datei bemerkt, nicht in PHP!

Ebenso gibt es einen HTML Error MOD, der aber auch den Webserver bzw. die .htaccess nutzt.
Also zwar mit PHP die Error-Seite erstellt, aber diese nicht per PHP auslöst!

Verfasst: Fr 17.Mär, 2006 14:18
von Dungeonwatcher
Soweit kann ich folgen und war mir das auch klar. Dann stelle ich die Frage mal anders:

Wenn phpBB eine Seite mit dem Text: "Das gewählte Thema oder der Beitrag existiert nicht." bzw. "Das ausgewählte Forum existiert nicht." ausgibt, wie bekomme ich dann das gewünschte in den Header? ^d

Verfasst: Fr 17.Mär, 2006 14:27
von oxpus
Nicht so ohne weiteres, denn:

Diese Meldung wird ja durch die viewforum.php/viewtopic.php angestossen und in der functions.php erstellt.
Jetzt ist die Frage, ob die page_header.php dann schon eingebunden ist (müsste ich jetzt auch erstmal nachsehen), um VORHER, also direkt mit Feststellung des Fehlers der Header ausgeblendet ($gen_simple_header = TRUE;) oder per "Schalter" mit einen anderen Inhalt erzeugt, bzw. eine andere "page_header.php" eingebunden werden kann.

Ich denke, so in etwa wäre das machbar, wenngleich ich auch aus zeitlichen Gründen erstmal ausscheide, sowas umzusetzen (ja, ich weiß, ich wiederhole mich).

Verfasst: Fr 17.Mär, 2006 15:25
von Dungeonwatcher
[quote="oxpus - Fr 17.März, 2006 14:27";p="56162"]Diese Meldung wird ja durch die viewforum.php/viewtopic.php angestossen und in der functions.php erstellt.[/quote]

Da setzte der von mir gepostete Code auch an, jou.
Jetzt ist die Frage, ob die page_header.php dann schon eingebunden ist (müsste ich jetzt auch erstmal nachsehen),
Ich denke ja. Zumindest deutet die o.g. Fehlermeldung darauf hin.
um VORHER, also direkt mit Feststellung des Fehlers der Header ausgeblendet ($gen_simple_header = TRUE;) oder per "Schalter" mit einen anderen Inhalt erzeugt, bzw. eine andere "page_header.php" eingebunden werden kann.
Jupp, genauso stellte ich mir das vor.
Ich denke, so in etwa wäre das machbar, wenngleich ich auch aus zeitlichen Gründen erstmal ausscheide, sowas umzusetzen (ja, ich weiß, ich wiederhole mich).
Null Problemo. Vieleicht traut sich ja ein anderer Profi diese Idee umzusetzen. :cool:

Verfasst: Fr 17.Mär, 2006 17:06
von Christian_N
Ich hoff das man mal hier mit reinschreiben kann, es gibt ja reichliche MODs wie z.B: HTML Error MOD usw. wo man mit eine eigene 404 Errorseite machen kann.
Standartmässig steht ja sowas

Code: Alles auswählen

Not Found
The requested URL /blabla.php was not found on this server.
Ist es möglich irgendwie bei eine eigene Error Seite mit einzubauen das er auch die datei name mit ausgibt z.B: - Auf dem Server wurde keine Datei mit dem Name /blabla.php gefunden. - sowie er beim Standard es tut?

Verfasst: Fr 17.Mär, 2006 19:40
von oxpus
Dem passenden MOD hatte ich schon gepostet ;)

Verfasst: Fr 17.Mär, 2006 19:42
von Christian_N
Ja der HTML Error MOD das ist klar, aber da kann ich nur mit machen, "Seite nicht gefunden, etc."

Aber wie kann ich die datei wie im Standard mit über geben das da auch /blabla.php steht es muss ja irgendwie geprüft werden welche Datei versucht aufzurufen und dann in der fehlermeldung ausgegeben werden.

Verfasst: Fr 17.Mär, 2006 20:02
von oxpus
Ja der HTML Error MOD das ist klar, aber da kann ich nur mit machen, "Seite nicht gefunden, etc."
Eben nicht!

Die Error-Seite kann jede(s) Seite oder Script sein, die der Webserver darstellen kann. Also auch ein PHP-Script!
Es ist nicht auf reine HTML-Seiten beschränkt!

Verfasst: Fr 17.Mär, 2006 20:19
von Christian_N
Ja nur wie mach ich die prüfung und übergaben dann das er blabla.php mit ausgibt in der fehlermeldung wenn ich www.meinedomain.de/blablab.php aufrufe?
Hab leider keine ahnung

Verfasst: Fr 17.Mär, 2006 20:20
von oxpus
Das steht in $HTTP_SERVER_VARS['REQUEST_URI'];

Verfasst: Fr 17.Mär, 2006 21:18
von Christian_N
Aha oki, dann mal schaun das ich es hinbekomme muss ja wenn ich die datei für 404 jetzt beispiel 404.php nenne kann ich ja mit dem blanko page mod oder wie der hieß womit man eine eigene seite machen kann wo der board-header/footer mit angezeigt wird irgendwie dann es mit message_die() ausgeben lassen oder so, mal schauen wie ich es hinbekomme, ansonste kriegt man ja hier gute hilfe :)

EDIT: Hab mal grob gemacht, aber es funktioniert, hab blabla.php aufgerufen stande wurde blabla.php ausgegeben hab blabla2.php aufgerufen stande blabla2.php - dann kann ich auch an den feinschlief nun ran gehn danke für den denkanstoß :)

Verfasst: Sa 18.Mär, 2006 13:36
von Dungeonwatcher
Hi! :cool:

Eine supermäßig gute Nachricht, diese Aufgabe ist gelöst worden und funktioniert hier bestens.

Bye/2