Error 404 Category not found in Joomla!
Im Rahmen eines umfangreichen Refactorings meiner Joomla! Webseite trat plötzlich ein "Error 404 Category not found auf". Da ich allein mit dieser Fehlermeldung sehr große Schwierigkeiten hatten bei Google eine Lösung zu finden, habe ich den Fehler mühselig selbst analysiert. Ich hoffe mit diesem Beitrag einigen Menschen, die dasselbe Problem haben, zu einer schnelleren Lösung zu verhelfen.
Erscheinungsbild des Fehlers
Betrachtet man die Webseite, die den Fehler erzeugt, sieht man schnell, dass die suchmaschinenfreundliche URL sehr seltsam aussieht. Normalerweise werden suchmaschinenfreundliche URL entsprechend der Menü-Struktur aus den Menü-Aliasen zusammengesetzt. Für jede Ebene, die das aktuelle Menü tiefer in der Menüstruktur liegt, wird ein neuer Alias an die URL angehängt (abgetrennt durch einen "/"). In der fehlerhaften URL ist das Kompartiment "category/" enthalten, das keinem Menü Alias entspricht.
Schaltet man die suchmaschinenfreundlchen URL's ab, verschwindet der Fehler.
Im Backend erscheinen im Menü "Komponenten" auf oberster Ebene Einträge wie "Links", die normalerweise Untermenüeinträge (des Menüs Weblinks und des Menüs Banner) sind.
Unter welchen Umständen entsteht der Fehler
- Es handelt sich um eine Joomal! 2.5 oder Joomla! 3 Webseite, die durch Update aus Joomla! 1.5 entstanden ist, vermutlich unter Verwendung von jUpgrade, aber evtl. auch auf anderem Weg.
- Evtl. wurden Menueinträge innerhalb der Menüstruktur mit Hilfe der Stapelverarbeitung verschoben
- Der/die betroffenen Menüeinträge werden mit Hilfe des "speichern" Buttons gespeichert.
Fehlersuche
Nachdem ich die offensichtich fehlerhafte SEF URL entdeckt hatte, habe ich mich auf die Suche nach der Fehlerursache gemacht. Bei einem ersten Blick in die #__menu Tabelle ist mir das Feld "path" aufgefallen, in der genau die fehlerhafte URL stand. Nachdem ich diese Feld manuell korrigiert habe, hat die URL wieder funktioniert, allerdings nur, bis ich das Menü erneut gespeichert habe. Schlussfolgerung: "path" ist nur ein Hilfsfeld, der Fehlerquelle liegt an anderer Stelle.
Nach weiterer intensiver Google Suche und Recherche im Joomla! Framework Code, habe ich einen Blick auf Werte in den Feldern "lft" und "rgt" in der #__menu Tabelle geworfen. Hierbei fiel auf, dass unterschiedliche Datensätze im Feld "lft" denselben Wert hatten, was nach meiner Analyse des Codes eigentlich nicht auftreten dürfte.
Fehlerquelle
Ursächlich verantwortlich für den Fehler sind falsche Werte in den Feldern "lft" und "rgt" in der Tabelle #__menu.
Fehlerbehebung
Um die Werte in den Feldern "lft" und "rgt" der Tabelle #__menu zu korrigieren habe ich nochmals im Joomla! Framework Code recherchiert, denn die Frage lautete natürlich, wie die richtigen Werte aussehen. Ich musste zuerst verstehen, wozu die Felder verwendet werden, wie sie verwendet werden und wie sie korrekt gesetzt werden und empfehle Ihnen dringend das ebenfalls zu tun, bevor Sie in die komplexe Tabelle eingreifen und Werte ändern. Das Ergebnis dieser Analyse habe ich in einem eigenen Beitrag beschrieben. Bitte lesen Sie sich den Beitrag in Ruhe durch. Anschließend können Sie die Tabelle reparieren.