Karl Heinz: Der richtige Umgang mit http Status Code 404

Hallo,

ich habe ein paar Fragen zum http Status Code 404.

Nehmen wir an ein Online-Shop führt einen bestimmten Artikel nicht mehr, aus diesem Grund wird der Artikel aus dem Online-Shop entfernt. Demnach ist die URL des Artikels nicht mehr erreichbar. Wenn diese URL von extern verlinkt ist und auf diesen Link geklickt wird bekommt man einen 404 Status Code. Man könnte nun hergehen und die betreffende URL mit dem Tool https://www.google.com/webmasters/tools/removals aus dem Google Index entfernen. Stattdessen könnte man hergehen und die URL per 301 Weiterleitung auf die Startseite des Online-Shops weiterleiten. Welcher dieser beiden Möglichkeiten ist die bessere, auch aus SEO Perspektive?

Nehmen wir an die URL für einige Produkte in einem Online-Shop hat sich geändert. Die Produkte gibt es nach wie vor nur eben unter einer anderen URL. Sollte man dann grundsätzlich per 301 Weiterleitung von der veralteten URL auf die neue URL umleiten?

Die Weiterleitung kann man über verschiedene Möglichkeiten realisieren z.B. über die .htaccess Datei, über PHP, über das Backend des Shops usw.. Wie entscheidet man welche dieser Möglichkeiten die optimale ist?

Nehmen wir an man realisiert die Weiterleitungen über die htaccess Datei. Bei großen Online-Shops kann die .htacces Datei dann über die Jahre gigantisch groß werden, weil die Anzahl der notwendigen Weiterleitungen aufgrund zahlreicher Änderungen über die Jahre immer mehr wird. Hat das einen Nachteil bzw. kann man diesen Nachteil irgendwie beseitigen?

PS: Tolle Aktion gestern, morgen bin ich natürlich bei den Demos dabei!!!

Viele Grüße

--
"Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."
  1. Tach!

    Nehmen wir an ein Online-Shop führt einen bestimmten Artikel nicht mehr, aus diesem Grund wird der Artikel aus dem Online-Shop entfernt. Demnach ist die URL des Artikels nicht mehr erreichbar. Wenn diese URL von extern verlinkt ist und auf diesen Link geklickt wird bekommt man einen 404 Status Code. Man könnte nun hergehen und die betreffende URL mit dem Tool https://www.google.com/webmasters/tools/removals aus dem Google Index entfernen. Stattdessen könnte man hergehen und die URL per 301 Weiterleitung auf die Startseite des Online-Shops weiterleiten. Welcher dieser beiden Möglichkeiten ist die bessere, auch aus SEO Perspektive?

    Betrachte die Sache doch erstmal aus der Sicht der Anwender. Was soll ein Besucher sehen, der einen bestimmten Artikel sucht, den es nicht mehr gibt? Ist es sinnvoll, ihn stattdessen kommentarlos auf die Startseite des Ladens zu werfen? Gibt sich nicht vielleicht eine bessere Alternative, beispielsweise das Anbieten eines Ersatzproduktes? Das sollte dann aber auch für den Kunden klar ersichtlich sein. Für ihn nicht nachvollziehbare Automatismen sind wenig hilfreich. Erst wenn das geklärt ist, sollten technische Finessen beleuchtet werden.

    Unabhängig davon, ob es ein Webshop oder was anderes ist, es gibt auch "410 Gone" zur Auswahl für etwas, das ersatzlos gestrichen wurde.

    Nehmen wir an die URL für einige Produkte in einem Online-Shop hat sich geändert. Die Produkte gibt es nach wie vor nur eben unter einer anderen URL. Sollte man dann grundsätzlich per 301 Weiterleitung von der veralteten URL auf die neue URL umleiten?

    Grundsätzlich sollte man meiner Meinung nach nicht solche Grundsatzfragen stellen sondern die konkrete Situation für alle Beteiligten betrachten und dann entscheiden. Aber ja, meist wird wohl die einfache Umleitung ausreichen, wenn der Inhalt vergleichbar ist.

    Die Weiterleitung kann man über verschiedene Möglichkeiten realisieren z.B. über die .htaccess Datei, über PHP, über das Backend des Shops usw.. Wie entscheidet man welche dieser Möglichkeiten die optimale ist?

    Man berücksichtigt alle gegebenen Umstände. Als Mitarbeiter des Geschäfts wird man wohl kaum technische Dateien editieren wollen. Da ist wohl eine Funktion der Shopsoftware die bessere Alternative.

    Als wir damals vom alten Selfhtml-Angebot auf das Wiki umgestiegen sind, haben wir eine Liste mit Redirect- und Rewrite-Anweisungen erstellt und diese als Teil der Apache-Konfiguration eingebunden. Das war aus unserer Sicht die beste Methode für diesen Fall.

    Nehmen wir an man realisiert die Weiterleitungen über die htaccess Datei. Bei großen Online-Shops kann die .htacces Datei dann über die Jahre gigantisch groß werden, weil die Anzahl der notwendigen Weiterleitungen aufgrund zahlreicher Änderungen über die Jahre immer mehr wird. Hat das einen Nachteil bzw. kann man diesen Nachteil irgendwie beseitigen?

    Große Dinge benötigen natürlich mehr Aufwand, sie abzuarbeiten. Wenn das bei jedem Request passieren soll, wird der nicht kleiner. Das als feste Konfiguration zu formulieren ist schon besser, aber hat auch noch Potential. Andererseits hat man eine geänderte .htaccess schneller im Spiel als den Apachen neugestartet. Und alter Mist, der nicht mehr da ist, benötigt auch keine Aufmerksamkeit. Ob dies oder das oder eine Mischung sinnvoll ist, ist hier die Frage, für die man manchmal erst Erfahrung sammeln muss, um sie für alle Beteiligten angemessen beantworten zu können.

    dedlfix.

  2. Der HTTP Status ist für Kunden uninteressant. Wenn es einen Artikel nicht mehr gibt, ist es naheliegend dem Kunden eine Alternative anzubieten. Somit egeben sich 2 Dinge deren Handhabe eine Sache der Shopsoftware ist und nicht der Serverkonfiguration. MFG

  3. Nehmen wir an die URL für einige Produkte in einem Online-Shop hat sich geändert.

    Hm. Da kommt es sehr auf den Grund an.

    1. Nehmen wir mal an, das Produkt sei eine FooBox 3963 gewesen. Die gibt es nicht mehr. aber eine FooBox 4963 als Nachfolger. Dann dürfte es wohl die beste Idee sein, auf einer Art "Landing-Page" den Preis und die Bestellmöglichkeit zu entfernen, die Nicht(mehr)verfügbarkeit anzuzeigen und mit Link auf das neue Modell hinzuweisen. Ob das mit Statuscode 200 oder 404 erfolgt, ist anhand der Frage zu entscheiden, ob man künftig bei einer Suche nach "FooBox 3963" gefunden werden will. Aber vielleicht hat man mit dem Angebot auch Dokumente, z.B. die Bedienungsanleitung verlinkt. Der Status 200 und die weitere Verfügbarkeit der Bedienungsanleitung für das nicht nicht mehr verfügbare Modell können den Kundendienst entlasten. Gute Bewertungen des alten Modells können zu einem Kauf des noch nicht bewerteten Nachfolgers führen. Ich plädiere in diesem Fall für Statuscode 200.

    2. Nehmen wir mal an, das Produkt sei auf Grund eines Erfassungsfehlers falsch benannt gewesen, was sich in der URL niederschlägt. Empfohlene Aktion: Weiterleitung mit Statuscode 301 - Moved Permanently.

    3. Nehmen wir mal an das Produkt sei auf Grund einer Erweiterung der Sprachen (z.B. spanisch sei neu im Webshop) auf einer neuen, weiteren Webseite erreichbar. Empfohlene Aktion: Feststellung der im Browser voreingestellten Sprache, Testen auf Cookie oder Session mit aktiv gewählter Sprache: Wenn positiv Anzeige in dieser (Statuscode 200) sonst Weiterleitung mit Statuscode 301 - Moved Permanently. Auf gesetztes Language-Attribut achten. Auch Status 300 (multible choises) ist dann (für eine Auswahlmöglichkeit) denkbar.

    4. Nehmen wir an, die Verzeichnisstruktur hat sich grundlegend geändert, z.B. durch die Einführung einer neuen oder Verzicht auf eine Kategororienebene. Empfohlene Aktion: Weiterleitung mit Statuscode 301 - Moved Permanently.

    Einen 404er zu senden ist also "technisch nicht falsch" aber "regelmäßig eher ungünstig".

  4. Hallo Karl-Heinz,

    was mir bei den Antworten der Kollegen fehlt, ist eine Überlegung zu SEO. Ich habe gerade nochmal einen Netztrace gemacht - wenn ich in einer Google-Liste auf einen Treffer klicke, sehe ich in der Browserstatuszeile die URL der gelisteten Seite, aber wenn ich drauf klicke, bekomme ich erstmal zwei andere Requests, die beide an Google gehen. Erst dann kommt die Navigation zur neuen Seite.

    D.h. Google merkt sich, was man klickt, und führt den Request ggf. im Hintergrund auch selbst nochmal aus, um zu prüfen, ob die Seite existiert. Hat Google keine Empfehlungen für Webmaster, welche Statuscodes sie am liebsten sehen würden? Andere SE dürften sich daran orientieren. Spontan finde ich das hier

    Rolf

    --
    sumpsi - posui - clusi
    1. was mir bei den Antworten der Kollegen fehlt, ist eine Überlegung zu SEO.

      (1) Die Seite mit Status 404 zeigt einen alternativen Artikel mit einem canonischen Link zur regulären Seite mit diesem Artikel, (2) die Seite mit Status 404 zeigt mehrere Links zu mehreren alternativen Artikeln.

      Das sind 2 Überlegungen die ich anstellen würde. MFG

    2. @@Rolf,

      was mir bei den Antworten der Kollegen fehlt, ist eine Überlegung zu SEO.

      Genau hier liegt meines Erachtens das Problem:

      Nehmen wir an Produkt A wird ersatzlos aus einem Online-Shop entfernt. Nehmen wir des weiteren an es gibt weder ein Nachfolgemodel von Produkt A noch ein anderes Produkt im Online-Shop das Produkt A auch nur ansatzweiße ähnelt. Demnach wäre es aus Besucher Sicht wohl das beste die Seite komplett aus dem Index zu entfernen. Aus SEO sich wäre es sinniger per 301 auf die Startseite weiterzuleiten.

      • Aus SEO Sicht wäre die richtige Wahl per 301 auf die Startseite weiterzuleiten.
      • Aus Besucher Sicht wäre die richtige Wahl die Landingpage von Produkt A komplett aus dem Index zu entfernen (Mit dem oben verlinkten Google Tool).

      Ich frage mich gerade für welche der beiden Varianten ich mich entscheiden soll.

      1. Aus SEO sich wäre es sinniger per 301 auf die Startseite weiterzuleiten.

        Ich frag mich hier des öfteren woher dieser Redirect Unsinn eigentlich kommt. Sicher mag ein redirect eine technische Lösung sein die in bestimmten Fällen sinnvoll ist aber hinsichtlich SEO war das noch nie empfehlenswert. MFG

      2. Hallo Karl Heinz,

        bist Du sicher, dass das Removal Tool das richtige Mittel ist, um auf das Auslisten von Produkten in einem Shop zu reagieren? Wenn Google bei jeder Auslistung einen Removal-Antrag bekommt, saufen die doch in solchen Anträgen ab.

        Insofern finde ich eigentlich einen Statuscode 404 (oder 410) mit einer aussagekräftigen Information ("dieses Produkt führen wir nicht mehr") besser. Man kann ja im Shop speichern, dass das Produkt ausgelistet ist, und wenn die Seite angefordert wird, auch gleich Alternativprodukte anbieten. Ein Redirect könnte dazu führen, dass der Suchtreffer im Index bleibt und nur eine neue Adresse dazu gespeichert wird.

        Kaum ein Shop wird statische URLs für die gelisteten Produkte verwenden. Eine URL wie http://shop.example.org/kleidung/kinder/strampler/st4701-17/blau wird typischerweise von einem HTTP Handler geparsed und direkt auf einen Controller gemappt (ASP.NET), oder per .htaccess auf sowas wie flogit.php?cat=kleidung,kinder,strampler&modell=st4701-17&farbe=blau gemappt. Und die Response ist komplett an Hand der Datenbank generiert. Wenn die Shopsoftware erkennt, dass das konkrete Produkt nicht mehr da ist, kann sie an Hand der Kategorie eine 404-Seite liefern, die Alternativprodukte auflistet. So fliegt man doch gleich zwei Schläge durch die Klappe (oder so).

        Rolf

        --
        sumpsi - posui - clusi
        1. Tach!

          Ein Redirect könnte dazu führen, dass der Suchtreffer im Index bleibt und nur eine neue Adresse dazu gespeichert wird.

          Das glaub ich nicht. Das würde zu falschen Ergebnissen führen und zu jeder Menge Beschiss. Der Text im Suchindex muss schon mit dem Text der Zielseite übereinstimmen und ebenso die Treffer zu bestimmten Suchbegriffen.

          Kaum ein Shop wird statische URLs für die gelisteten Produkte verwenden. Eine URL wie http://shop.example.org/kleidung/kinder/strampler/st4701-17/blau wird typischerweise von einem HTTP Handler geparsed und direkt auf einen Controller gemappt (ASP.NET), oder per .htaccess auf sowas wie flogit.php?cat=kleidung,kinder,strampler&modell=st4701-17&farbe=blau gemappt.

          Oder das PHP-Script parst selbst die URL. Was ASP.NET kann, kann PHP und die dafür erstellten Frameworks auch.

          dedlfix.

          1. Hallo dedlfix,

            Oder das PHP-Script parst selbst die URL.

            Geht das nach einem rewrite noch? Wusste ich nicht, bin ja eher im IIS unterwegs. Ich habe mal privat etwas ähnliches gebaut, aber dabei das Apache Feature genutzt, bei Existenz von /kleidung.php dieses Script aufzurufen, wenn /kleidung/kinder/foo/17 abgerufen wird.

            Rolf

            --
            sumpsi - posui - clusi
            1. Tach!

              Oder das PHP-Script parst selbst die URL.

              Geht das nach einem rewrite noch?

              Ja, die ursprüngliche Adresse steht in einem der $_SERVER-Werte. Es ist nur recht einfach, alles auf Queryparameter umzuschreiben und diese dann gleich in $_GET vorzufinden. Deswegen hat sich wohl diese Methode vorwiegend etabliert und Alternativen sind kaum im Bewusstsein. Allerdings ist man da auf ein feststehendes URL-Muster beschränkt.

              dedlfix.

      3. Tach!

        Nehmen wir an Produkt A wird ersatzlos aus einem Online-Shop entfernt. Nehmen wir des weiteren an es gibt weder ein Nachfolgemodel von Produkt A noch ein anderes Produkt im Online-Shop das Produkt A auch nur ansatzweiße ähnelt. Demnach wäre es aus Besucher Sicht wohl das beste die Seite komplett aus dem Index zu entfernen. Aus SEO sich wäre es sinniger per 301 auf die Startseite weiterzuleiten.

        Welchen Sinn soll das denn ergeben? Einerseits für die Suchmaschine, andererseits für die Besucher?

        Der Besucher, der über die Suchmaschine kommt, findet kein Ergebnis mehr. Meinst du, er ist darüber so erfreut, dass er nun was anderes kauft? Gibt vielleicht einige, mich würde das stören.

        Die Suchmaschine leitet den Besucher auf etwas, das nicht dem Suchbegriff entspricht, geschweige denn einem gleichwertigen Ersatz. Meinst du, Besucher mögen solche Suchmaschinen? Meinst du die Suchmaschinen würden wollen, dass ihre Besucher derartig unzutreffende Ergebnisse zu sehen bekommen? Die werden das jedenfalls nicht so mitmachen. Wenns nicht passt, fliegt es früher oder später aus dem Index. Vielleicht gibts dafür auch Abwertungen.

        • Aus SEO Sicht wäre die richtige Wahl per 301 auf die Startseite weiterzuleiten.

        Nein, weg ist weg.

        • Aus Besucher Sicht wäre die richtige Wahl die Landingpage von Produkt A komplett aus dem Index zu entfernen (Mit dem oben verlinkten Google Tool).

        Ich frage mich gerade für welche der beiden Varianten ich mich entscheiden soll.

        dedlfix.

        1. @@dedlfix,

          Nehmen wir an Produkt A wird ersatzlos aus einem Online-Shop entfernt. Nehmen wir des weiteren an es gibt weder ein Nachfolgemodel von Produkt A noch ein anderes Produkt im Online-Shop das Produkt A auch nur ansatzweiße ähnelt. Demnach wäre es aus Besucher Sicht wohl das beste die Seite komplett aus dem Index zu entfernen. Aus SEO sich wäre es sinniger per 301 auf die Startseite weiterzuleiten.

          Welchen Sinn soll das denn ergeben? Einerseits für die Suchmaschine, andererseits für die Besucher?

          Der Besucher, der über die Suchmaschine kommt, findet kein Ergebnis mehr. Meinst du, er ist darüber so erfreut, dass er nun was anderes kauft? Gibt vielleicht einige, mich würde das stören.

          OK, ich gebe Dir Recht.

          Mal ein anderer Gedanke:

          Nehmen wir an im Januar 2019 war Produkt A noch im Online-Shop kaufbar. In einem Blog hat jemand über dieses tolle Produkt berichtet. Dieser jemand hat aus seinem Blog auf die URL von Produkt A verlinkt. Im Februar 2019 wurde Produkt A aus dem Online-Shop entfernt. Der Link aus dem Blog auf Produkt A ist nach wie vor vorhanden. Klickt jemand auf den Link erhält dieser jemand eine 404, unabhängig davon, ob man das Produkt aus dem Index hat entfernen lassen oder nicht. Eine Weiterleitung auf die Startseite wäre wohl Unsinn, die Person die über den Link vom Blog kommt würde sich fragen wo das Produkt ist. Wenn es demnach kein gleichwertiges oder ähnliches Ersatzprodukt gibt wäre vermutlich eine 404 Seite die beste Lösung. Auf der 404 Seite würde dann stehen, dass die URL nichtmehr erreichbar ist bzw. das das daran liegen kann, dass das Produkt nicht mehr im Sortiment ist. Des weiteren packt man in die 404 Seite interessante Zusatzinformationen. In diesem Kontext wären 404 Seiten gewünscht bzw. sollten auch nicht durch 301 Weiterleitungen beseitigt werden. Korrekt?

          1. Tach!

            Nehmen wir an im Januar 2019 war Produkt A noch im Online-Shop kaufbar. In einem Blog hat jemand über dieses tolle Produkt berichtet. Dieser jemand hat aus seinem Blog auf die URL von Produkt A verlinkt. Im Februar 2019 wurde Produkt A aus dem Online-Shop entfernt. Der Link aus dem Blog auf Produkt A ist nach wie vor vorhanden. Klickt jemand auf den Link erhält dieser jemand eine 404, unabhängig davon, ob man das Produkt aus dem Index hat entfernen lassen oder nicht. Eine Weiterleitung auf die Startseite wäre wohl Unsinn, die Person die über den Link vom Blog kommt würde sich fragen wo das Produkt ist. Wenn es demnach kein gleichwertiges oder ähnliches Ersatzprodukt gibt wäre vermutlich eine 404 Seite die beste Lösung. Auf der 404 Seite würde dann stehen, dass die URL nichtmehr erreichbar ist bzw. das das daran liegen kann, dass das Produkt nicht mehr im Sortiment ist. Des weiteren packt man in die 404 Seite interessante Zusatzinformationen. In diesem Kontext wären 404 Seiten gewünscht bzw. sollten auch nicht durch 301 Weiterleitungen beseitigt werden. Korrekt?

            Das kann man so sehen. Die Frage ist, ob man das mit einem technischen 404 beantworten will, denn rein technisch hat man ja was zu der URL gefunden.

            Es wäre erstmal zu klären, was die Besucher davon haben, zu diesem Link noch etwas zu finden. Produkt nicht mehr verfügbar, aber Handbücher sind noch im Downloadbereich vorhanden? Sowas ist kein 404. Das ist ein ganz normales 200 mit Ausverkauft-Aufkleber überm Preis. 404 ist, wenn die URL tatsächlich nicht mehr konnektiert ist, und stattdessen eine Fehlerbehandlungsroutine einspringt. Man kann auch überlegen, ob man das Produkt ins Archiv schiebt, und es dort eine neue URL bekommt, mit Redirect von der alten.

            dedlfix.

          2. Hallo Karl Heinz,

            Wenn es demnach kein gleichwertiges oder ähnliches Ersatzprodukt gibt wäre vermutlich eine 404 Seite die beste Lösung.

            Das denke ich nicht. Ich würde die Seite so lassen wie sie ist (d. h. mit 200 ausliefern) und ein "derzeit ausverkauft" o. ä. ziemlich prominent positionieren. Das hat wahrscheinlich zur Folge, dass die Seite von ganz allein aus den Suchmaschinenergebnissen verschwindet. Gibt es irgendwann das Produkt wieder, lässt sich die Seite wieder reaktivieren. Nach einer gewissen Zeit kann man Datenbankhygiene betreiben und alle Seiten, die "derzeit ausverkauft" sind, mit einem sauberen 404 versehen. Heißt für mich Fehlerbeschreibung und Link auf die Startseite. Oder auch so.

            Bis demnächst
            Matthias

            --
            Pantoffeltierchen haben keine Hobbys.
            ¯\_(ツ)_/¯