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
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.
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.
+1 lol, Köder und Schalter! –
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");
?>
- 1. Was soll chrome.identity.getProfileUserInfo zurückgeben?
- 2. Bridging-Header existiert nicht
- 3. Was wird readAllLines zurückgeben, wenn die Datei nicht existiert?
- 4. Was ist, wenn call_user_func false zurückgeben soll?
- 5. Welche URL soll ich verwenden?
- 6. Welche InitialContextFactory soll ich verwenden?
- 7. Wann ReleaseDesignerOutlets aufgerufen werden soll, wenn ViewDidUnload nicht existiert
- 8. Dropwizard Auth - Wie Standardbenutzer zurückgeben, wenn Header nicht gegeben ist?
- 9. Wie soll ich Benutzereingaben bereinigen, wenn ich nicht in eine Datenbank schreibe?
- 10. Wie soll ich eine Webseite ohne Browser erstellen?
- 11. welche von == und =: = soll ich verwenden?
- 12. Welche http-Statuscodes soll ich einstellen und in welchen Situationen?
- 13. Welche Kontrolle soll ich dafür verwenden?
- 14. Welche Git Zweige soll ich markieren?
- 15. Zurückgeben, wenn eine Variable nicht definiert ist
- 16. Warum existiert der Server-HTTP-Header?
- 17. Welche Version von SignalR soll ich ausführen?
- 18. Welche Inhaltslänge soll ich senden, wenn ich Daten mit gzip codiere?
- 19. Wie schreibe ich eine Datei, wenn der Elternordner nicht existiert?
- 20. AppleScript: Wenn eine Datei nicht existiert
- 21. HttpRequest.Content.IsMimeMultipartContent() gibt false zurück, wenn es true zurückgeben soll
- 22. Was soll ich in presentationIndexForPageViewController zurückgeben: für meine UIPageViewControllerDataSource?
- 23. Welche application_rb-Datei soll ich bearbeiten?
- 24. Sharepoint: Liste existiert nicht. Welche Liste?
- 25. Welche MIME-Typ soll ich für mp3
- 26. Welche Version von openssl soll ich verwenden?
- 27. Was soll * (vec.begin() - 1) zurückgeben?
- 28. IsAssignableFrom() gibt false zurück, wenn es true zurückgeben soll
- 29. GCM und iOS Bridging-Header existiert nicht
- 30. TreeSet gibt false zurück, wenn es true zurückgeben soll?
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
Sie können eine 404 (oder andere) Kopfzeile auch aus PHP mit 'header()' senden. – GolezTrol
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. –