Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Weiterleitung header()

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
sword
PostRank 3
PostRank 3
Beiträge: 72
Registriert: 08.07.2006, 13:46

Beitrag von sword » 12.11.2011, 12:09

Hallo

Ich habe eine PHP-Seite, welche die Artikel aus einer Datenbank holt und entsprechend anzeigt. Ist der Artikel nicht mehr vorhanden, soll die Seite fehler.html angezeigt werden mit einer Information für den Besucher.

In der Artikelseite wird folgender Code ausgeführt, wenn der Artikel nicht mehr vorhanden ist:

Code: Alles auswählen

	header("HTTP/1.1 404"); 
	header("Location: /fehler.html");
	exit; 
Und unter fehler.html:

Code: Alles auswählen

header("HTTP/1.1 404");
Die Umleitung funktioniert sehr gut.
Bisher dachte ich, dass auch Google & Co. einen sauberen 404er erhalten. Wenn ich aber mit einem Tool wie Web-Sniffer den Status abfrage, erhalte ich Status: HTTP/1.1 302 Found

Warum kein 404er? Mache ich den Test direkt über die fehler.html, erhalte ich den gewünschten Code: Status: HTTP/1.0 404 Not Found

Somit sind einzelne Artikelseiten, die es gar nicht mehr gibt, trotzdem noch im Google Index zu finden. Was mache ich falsch?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 12.11.2011, 12:21

Du musst keine Location Angabe für die Fehlerseite auf der Artikelseite angeben. Dort einfach den 404 header ausgeben und z.B. in der .htaccess über die ErrorDocument Direktive für 404 Behandlung die fehler.html eintragen.

Dann sollte es korrekt laufen ohne unsinnigen 302 dazwischen.

sword
PostRank 3
PostRank 3
Beiträge: 72
Registriert: 08.07.2006, 13:46

Beitrag von sword » 12.11.2011, 12:40

Da hab ich aber ein Problem. Ich möchte unterschiedliche Fehlerseiten haben. Wenn z.B. eine statisiche Seite aufgerufen wird aber nicht existiert, leite ich bereits in der .htaccess auf eine 404er Seite weiter, wo steht dass die Seite nicht existiert.

Bei den Artikeln möchte ich auf die Seite fehler.html weiterleiten, wo dann steht, dass der Artikel nicht mehr erhältlich ist und zusätzlich Ersatzartikel angezeigt werden. In der .htaccess kann ich aber nicht zwei verschiedene Fehlerseiten unterscheiden.

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 12.11.2011, 13:31

Erste Alternative (schöner):

Sofern Du sonst keine Verwendung für das ErrorDocument 410 Gone hast, könntest Du darüber die Unterscheidung machen. Also bei den nicht mehr vorhandenen Artikeln ein 410 senden und für den 410 ein eigenes Errordocument anlegen, dass die Anforderungen bzgl. Ersatzartikel etc. erfüllt.

Zweite Alternative (unschöner):

Bei nicht vorhandenen Artikeln über 301 auf die fehler.html lenken (ohne 404 auf der Artikelseite) und dort den 404 senden (besser noch einen 410, wenn der Artikel früher mal vorhanden war).

Nen 301 auf nen 404 ergibt auch einen korrekten 404 (bzw. 410 bei 401 auf 410).

Pork am Kork
PostRank 1
PostRank 1
Beiträge: 22
Registriert: 15.11.2011, 19:57

Beitrag von Pork am Kork » 15.11.2011, 20:27

sword hat geschrieben:

Code: Alles auswählen

header("HTTP/1.1 404"); 
header("Location: /fehler.html");
exit;
Wenn ich aber mit einem Tool wie Web-Sniffer den Status abfrage, erhalte ich Status: HTTP/1.1 302 Found

Warum kein 404er?
Das Senden von Location an den Browser impliziert, dass der Browser eine andere Seite holen soll (genau dafür ist Location gedacht, zur Angabe einer Weiterleitungs-URL). Eine andere Seite holt der Browser nur, wenn der Server dem Browser eine Weiterleitung meldet. Und dieses wiederum geht nur, wenn der Server keinen anderen Status ausgibt.

Kurz: Man kann nicht gleichzeitig den Fehler 404 und die Weiterleitung 302 ausgeben, entsprechend nicht gleichzeitig 404 und Location benutzen.
Ich möchte unterschiedliche Fehlerseiten haben. Wenn z.B. eine statisiche Seite aufgerufen wird aber nicht existiert, leite ich bereits in der .htaccess auf eine 404er Seite weiter, wo steht dass die Seite nicht existiert.

Bei den Artikeln möchte ich auf die Seite fehler.html weiterleiten, wo dann steht, dass der Artikel nicht mehr erhältlich ist
Gib' wie bisher 404 (oder schöner: 410) aus und binde die gewünschte Fehlerseite per virtual() ein, in etwa so:

Code: Alles auswählen

header("HTTP/1.1 410 Giffat nicht mehr"); 
virtual("/fehler/artikel-ausgelaufen.html");
exit();
Beachte, dass du in der Fehlerseite kein 404/410 ausgibst – das passiert bereits in obiger Zeile 1 und, schlimmer, dürfte virtual() durcheinanderbringen.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 16.11.2011, 10:23

sword hat geschrieben:In der Artikelseite wird folgender Code ausgeführt, wenn der Artikel nicht mehr vorhanden ist:
Das einfachste wäre es doch wohl, Du baust in den Artikelseiten saubere 301 Weiteleitungen ein, leitest die Kunden auf unterschiedliche von Dir gewünschte Ersatzseiten mit Ersatzangeboten und diese Ersatzseiten setzt Du dann auf noindex.
sword hat geschrieben:Somit sind einzelne Artikelseiten, die es gar nicht mehr gibt, trotzdem noch im Google Index zu finden. Was mache ich falsch?
sword hat geschrieben:Bei den Artikeln möchte ich auf die Seite fehler.html weiterleiten, wo dann steht, dass der Artikel nicht mehr erhältlich ist und zusätzlich Ersatzartikel angezeigt werden.
Mit 301 Weiteleitungen auf Seiten mit noindex verschwinden die alten, nicht mehr vorhandenen Artikelseiten aus dem Index, die neuen Hinweisseiten werden durch noindex hingegen nicht aufgenommen. So kannst Du den Kunden unterschiedliche und zu den fehlenden Produkten passende Hinweisseiten mit zusätzlichen Ersatzartikeln ausgeben. Und ob Du die Seiten fehler.html oder hinweise.html nennst, ist doch Jacke wie Hose.

Und wenn Du die Hinweisseiten nicht auf noindex setzt, weil Du möchtest, dass diese im Index verbleiben oder aufgenommen werden, so ist es auch gut. Wichtig ist doch, dass Du Google mit einem 301 Statuscode mitteilst, dass die alten Seiten permanent weitergeleitet werden und nicht mehr unter der alten Adresse zu finden sind.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag