Seite 1 von 1
404 er Header senden
Verfasst: 14.09.2005 20:03
von The real Indigo
Wenn Themen gelöscht oder nicht vorhanden sind, gibt es ja ne kurze Meldung.
Ist es möglich einen 404er Header zu senden ?
Wäre nützlich damit die Seiten nicht weiter indexiert werden.
Verfasst: 14.09.2005 20:39
von FatFreddy
Keine schlechte Idee.
Ich habe gerade mal versucht, ganz dilettantisch

eine 404er-Meldung in die message_die() einzubauen.
Message_Die gibt jetzt, bei Aufruf eines nicht existierenden Topics, brav als erstes ein 404 zurück. Danach wegen funktionierender Ausgabe diverse 200er. Im Browser wird die klassische Meldung gezeigt:
Firefox Header Monitor hat geschrieben:
http://www.inseltalk.de/post-6230.html
GET /post-6230.html HTTP/1.1
Host:
www.inseltalk.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
HTTP/1.x 404 OK
Date: Wed, 14 Sep 2005 18:31:39 GMT
Server: Apache/1.3.33 (Unix)
Cache-Control: private, pre-check=0, post-check=0, max-age=0
Expires: 0
Pragma: no-cache
X-Powered-By: PHP/4.3.10
.
.
.
.
.
.
Ob das so funktioniert, oder aber die folgenden 200er stören, ist mir nicht klar.
Jemand eine Idee?
FatFreddy
Nachtrag: Der Einbau war wohl zu dilettantisch! Der IE meldet im Versuch jetzt ein unfreundliches "Headers already sent."
Nachtrag2: Aber nur für angemeldete User.

Verfasst: 14.09.2005 21:17
von fanrpg
mit header() kann man einen Header senden und so sendet man einen 404er:
Verfasst: 15.09.2005 03:24
von FatFreddy
Gut erkannt!

Aber, wie Du am Output des Headermonitors sehen kannst, funktioniert das bereits.
Mir mag es nur nicht recht gelingen, den header zuverlässig zur rechten Zeit zu senden.
FatFreddy
Verfasst: 15.09.2005 12:14
von The real Indigo
Hmmm, normal dürfte das doch nicht so schwer sein.
Müsste doch mit ner einfachen Abfrage gehen ?
Quasi wenn Topic nicht vorhanden dann den 404er senden, sonst normal weiter mit der Ausgabe.
Bin leider kein PHP Profi...
Edit: Bei Inseltalk gehts doch ohne Probleme, wie es aussieht.
Welchen Code haste da eingebaut ???
Verfasst: 15.09.2005 12:48
von FatFreddy
Es ist, wie gesagt, eine dilettantische Lösung, die ich gewählt habe. Es sollte auch nur zum Test sein.
Es funktionierte einwandfrei, solange man nicht als User angemeldet ist.
Der Fehler ist aber mittlerweile behoben. Insofern hat sich Nachtrag 2 aus meinem ersten Post erledigt.
öffne includes/finctions.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");
}
Zur Zeit versuche ich herauszufinden, ob es nicht unerwünschte Nebeneffekte gibt.
Ich weiß z.B. noch nicht, ob diese Funktion nur aufgerufen wird, wenn die Seite nicht existiert.
FatFreddy
Verfasst: 15.09.2005 13:31
von The real Indigo
Sehr schön. Ich werde das dann auch mal einbauen und testen.
Werd mich dann heute Abend dazu melden.
Verfasst: 15.09.2005 21:43
von The real Indigo
Also laufen tut das ohne Probleme.
Kriege auch keine Fehlermeldung.
Werde jetzt ein paar Tage testen ob Google die gelöschten Threads rausnimmt.
Verfasst: 17.03.2006 11:38
von Dungeonwatcher
Moin!
Hmmm, 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
Bye/2