Kann ich Apache ErrorDocument dazu bringen, 404 statt 301 zurückzugeben?

Kann ich Apache ErrorDocument dazu bringen, 404 statt 301 zurückzugeben?

In meinem .htaccesshabe ich

ErrorDocument 404 http://foo.com/404.html

Es funktioniert in dem Sinne, dass ich jeden „Datei nicht gefunden“-Fehler behebe und stattdessen die 404-Seite anzeige. Allerdings funktioniert es so, dass die fehlerhafte URI mit einer 301-Weiterleitung auf meine 404.htmlSeite umgeleitet wird.

Das ist schlecht, weil Suchmaschinen und Crawler dann keinen 404-Code, sondern einen 301-Code sehen und gelöschte Seiten nicht aus ihren Indizes entfernen.

Kann ich Apache dazu bringen, den Inhalt dieser 404-Seite bei „Datei nicht gefunden“-Fehlern bereitzustellen und dennoch einen 404-Code statt des 301-Codes zurückzugeben?

Antwort1

Sie sollten versuchen, einen absoluten oder relativen Pfad und keine URL zu verwenden

Meine apache2.conf:

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

Antwort2

Verweisen Sie nicht auf eine externe URL

Apaches Dokumentation sagt:

Die Syntax lautet:

ErrorDocument <3-digit-code> <action>

wo die Aktion stattfinden kann,

  • Anzuzeigender Text. Setzen Sie Anführungszeichen (") um den Text.
  • Eine externe URL, zu der weitergeleitet werden soll.
  • Eine lokale URL, zu der weitergeleitet werden soll.

Das Verweisen auf eine externe URL führt zu einer tatsächlichen Weiterleitung, während die Verwendung einer lokalen URL intern ist.

Um den Inhalt einer Datei darzustellen, zeigen Sie einfach darauf, z. B.:

ErrorDocument 404 /404.html

Verwenden Sie den richtigen Statuscode für den Job

Das ist schlecht, denn Suchmaschinen und Crawler sehen dann keinen 404-Code, sondern einen 301-Code undlöscht gelöschte Seiten nicht aus ihren Indizes.

Wenn die Seitegebrauchtzu existieren und jetzt nicht mehr, lautet der richtige Antwortcode410 Weg. 410 ist der Code, der sagt „Hey, das existiert nicht“, während ein 404-Code nur nach wiederholten Versuchen, auf die nun nicht mehr existierende Seite zuzugreifen, als solche verstanden wird.

Antwort3

Kommentar zu den Antworten von Maxence und AD7six (mein Ruf bei Serverfaul ist nicht hoch genug und der Ruf bei Stack Exchange zählt anscheinend nicht):

Ich habe das Problem gerade auf diese Weise gelöst, allerdings fehlten dann die eingebundenen Bilder und Styles, da die URL immer noch die URL ist, die der Benutzer aufrufen wollte.

Die Lösung besteht darin, im Kopf des 404-Dokuments ein Basis-Tag hinzuzufügen, wie

ErrorDocument 404

oder absolute URLs mit oder ohne Protokoll/Domänennamen zu verwenden.

verwandte Informationen