Zurück zum Blog

Suchmaschinenfreundliche 404-Fehler mit Magento

Portiert man einen bereits bestehenden Shop nach Magento (oder egal in welches System), entstehen dabei in der Regel eine Vielzahl an 404-Fehlern, da sich die Produkt-Url's ändern. Die sauberste Lösung ist dabei, Redirects für alle alten Url's automatisiert herzustellen, was jedoch auch immer abhängig vom alten Shop-System und dessen URL-Aufbau ist.

Die andere und einfachste Variante ist die Anzeige der Startseite anstatt einer 404-Fehlerseite. Hierfür bietet Magento über "System > Konfiguration > Web > Standardseiten > CMS keine Route Seite" die Möglichkeit, eine Standardseite für nicht existierende Seiten einzustellen.

Ruft man also z.B. www.domain.com/meine-nicht-vorhandene-seite auf, dann wird mit dieser Einstellung der Inhalt der Startseite angezeigt. Die URL bleibt trotzdem im Browser stehen, und zudem wird im Header der Statuscode 404 gesendet. Beim Relaunch eine Shops entsteht dabei das Problem, dass hiermit ziemlich viele 404-Seiten vorhanden sind, und sich dies negativ auf die Google-Rankings auswirken könnte.

Schöner und besser wäre es meiner Meinung nach, alle nicht mehr vorhandenen Seiten direkt per 301-Redirect auf die Startseite weiterleiten zu lassen. Da Magento seinen eigenen Error-Handler verwendet, ist dies jedoch nicht so einfach möglich. Zum Beispiel wird die Anweisung "ErrorDocument 404 /" in der .htaccess-Datei schlichtweg ignoriert. Abhilfe schafft ein eigenes Modul, das den IndexController und in weiterer Folge die noRoute-Action überschreibt.

Für das Modul wird anfangs unter app/code/local/Keynet der Ordner "Redirect" erstellt (der Ordner "Keynet" wird bei Euch auch anders lauten oder muss eben erst erstellt werden). Im Ordner "Redirect" sind dann noch die beiden Verzeichnisse "etc" und "controllers" zu erzeugen. Danach muss die Datei config.xml im Ordner "etc" erzeugt und mit folgendem Inhalt gespeichert werden:

<?xml version="1.0"?>
<config>
  <modules>
    <Keynet_Redirect>
      <version>0.0.1</version>
    </Keynet_Redirect>
  </modules>
  <frontend>
    <routers>
      <mycms>
        <use>standard</use>
        <args>
          <module>Keynet_Redirect</module>
          <frontName>redirect</frontName>
        </args>
      </mycms>
    </routers>
  </frontend>	
  <global>
    <routers>
      <cms>
        <rewrite>
          <index>
            <to>Keynet_Redirect/index</to>
            <override_actions>true</override_actions>
            <actions>
              <noroute><to>Keynet_Redirect/index/noroute</to></noroute>
            </actions>
          </index>
        </rewrite>
      </cms>
    </routers>
  </global>
</config>
config.xml für das Redirect-Modul

Anschließend wird die Datei IndexController.php in /controllers erzeugt. Darin wird die noRoute-Action überschrieben und eine Weiterleitung per 301-Statuscode zur Startseite eingerichtet.

<?php
class Keynet_Redirect_IndexController extends Mage_Cms_IndexController
{
    public function noRouteAction($coreRoute = null)
    {
        header("Status: 301"); 
        header('Location: http://www.domain.com/');
    }
}
Überschreiben des Cms_IndexController in Magento

Abschließend ist noch die Datei Keynet_Redirect in /app/etc/modules herzustellen, damit die Extension auch durch Magento aktiviert bzw. verwendet wird. Zur Vollständigkeit halber hier der Inhalt dieser Datei:

<?xml version="1.0" encoding="UTF-8"?>
<config>
   <modules>
      <Keynet_Template>
         <active>true</active>
         <codePool>local</codePool>
      </Keynet_Template>
   </modules>
</config>
Inhalt der Datei Keynet_Redirect.xml

Am Ende möchte ich noch die Diskussion starten, ob es unbedingt notwendig ist hierfür extra ein Modul zu entwickeln, oder ob Ihr der Meinung seit, das Google ja sowieso nach einiger Zeit die Seite mit den 404-Statuscodes entfernt/ignoriert und die Umstellung mit den damit verbundenen Fehlerseiten keine negative Auswirkungen auf die Rankings haben wird? Ich freue mich auf eventuelle Antworten bei den Kommentaren!

Diesen Artikel teilen

Schreiben Sie den ersten Kommentar zu diesem Artikel

Ihr Kommentar

Bitte geben Sie Ihren Namen an
Bitte geben Sie eine E-Mail Adresse an
Bitte geben Sie eine Nachricht ein
Das Ergebnis ist nicht korrekt