2010-11-22 11 views
2

Was passiert, wenn auf Ihrer Website keine Seite existiert? Wenn ich eine benutzerdefinierte Fehlerseite in meinem .htaccess eingerichtet habe, bekomme ich eine temporäre 302-Umleitung zu meiner 404-Seite (wo ich 404-Header sende). Soll das so funktionieren? Oder sollte ich eine 301 permanente Umleitung auf die Fehlerseite machen? Ich benutze PHP und Apache.Wenn eine Webseite nicht existiert, welche Header soll ich zurückgeben?

Antwort

5

Die nicht existierende Seite wurde nicht "vorübergehend verschoben" (301) oder "permanent verschoben" (302) zu einer Seite über die Datei existiert nicht, sie existiert nicht. Der richtige zu sendende Header ist ein 404, nichts anderes.

Führen Sie keine Umleitung an einer beliebigen Stelle durch, sondern verwenden Sie den Inhalt der Seite "Datei nicht gefunden" unter der angeforderten URL.

+0

Aber meine Seiten werden dynamisch generiert (sorry, dass vergessen zu erwähnen), also muss ich die Seite überprüfen, ob seine eine gültige Seite und somit kann nicht geladen werden Redirect von meiner .htaccess-Datei richtig? – Luke

+1

Sie können eine 404 (oder andere) Kopfzeile auch aus PHP mit 'header()' senden. – GolezTrol

+0

Sie müssen also alle URLs in Ihre PHP-Datei umschreiben, die Ihre Seite generiert. Diese PHP-Datei kann, wenn sie den zu liefernden Inhalt nicht finden kann, einen 404-Header und einen "Seite nicht gefunden" -Text senden. Siehe GolezTrols spätere Antwort für ein Beispiel. –

7

Wenn es nie existiert hat, sollten Sie senden 404 Not Found.

Wenn es einmal existierte, aber nicht mehr, sollten Sie 410 Gone senden.

Richten Sie Ihren Server so ein, dass die Fehlerantwort direkt gesendet wird.

Sie sollten nicht zu einer Fehlerseite umleiten. Das bedeutet im Wesentlichen die Konversation würde gehen:

  • Browser: Kann ich/foo?
  • Server: Sie können/foo at/bar finden!
  • Browser: Kann ich dann haben/bar?
  • Server: Ich kann nicht finden/bar.

Köder und Schalter ist nie nett.

+0

+1 lol, Köder und Schalter! –

1

Wenn Sie eine statische Fehlerseite erhalten haben, sagen 404.html, dass Apache zeigt, wenn eine Seite nicht gefunden wird, und Sie 404 Seiten auch für Ihre dynamischen Seiten bereitstellen müssen, können Sie das tun, indem Sie senden die 404-Header von PHP und füttern die Fehlerseite als auch:

<?php 
header("HTTP/1.0 404 Not Found"); 
readfile("404.html"); 
?> 
Verwandte Themen