J5.2 Canonical -> ist das so korrekt oder die Büchse der Pandorra?

  • Joomla Version
    5.2
    PHP Version
    PHP 8.3.x
    Hoster
    webgo

    Hallo Forum,

    nachdem Joomla 5.2/5.4 einen Mist im Umgang mit den URL´s gemacht hat (Pagination), kommt mit J5.2 scheinbar eine Wiedergutmachung des Fehlers, wobei die ?start=0 Parameter nicht entfernt worden sind und man dies in der .htaccess machen muss

    tekknotrip
    15. September 2024 um 20:51

    Mein Problem ist mit J5.2, dass an JEDE ungültige Seite jetzt ein rel="canonical" angehängt wird. ich weiß nicht, ob das im Sinne des Erfinders ist. Cannonical soll doch nur die Originalseiten auszeichnen und nicht die Vertipper?


    Beispiel artikel.html

    Code
    <link href="/artikel.html" rel="canonical">

    artikel.html?start=0

    Code
    <link href="/artikel.html?start=0" rel="canonical">

    eigentlich sollte artikel.html?start=0 so aussehen:

    Code
    <link href="/artikel.html" rel="canonical">

    Bevor ich aber ein Ticket aufmache, wollte ich von euch einmal wissen, ob ich mit meiner Vermutung richtig liege und das nächste Fiasko ausgelöst wurde.

    Kanonische URL mit rel="canonical" und anderen Methoden angeben | Google Search Central  |  Dokumentation  |  Google for Developers
    Wenn eine Website doppelte Inhalte hat, wählt Google die kanonische URL aus. Hier erhältst du weitere Informationen zu kanonischen URLs und wie du doppelte…
    developers.google.com

    Grüße,

    Micha

  • Nur am Rande, J5.4 gibts noch nicht.

    Ja, dass stimmt. Ich habe die 1. vergessen.

    nachdem Joomla 5.1.2/5.1.4 einen Mist im Umgang mit den URL´s gemacht hat (Pagination)

    Zitat

    Welche SEO Extension und welche Änderung in der .htaccess hast du im Einsatz?

    Das spielt keine Rolle und ist auf jeder J5.2 Installation reproduzierbar.

    Hänge einfach hinten an:

    .html?start=0

    und schau dir anschließend den Quelltext an - das funktioniert auch mit jedem Mist, den man hinten anhängt. Alles ist rel="canonical" und somit ein WorstCase Szenario ... denke ich


    Ich habe Hackwar schon einen entsprechenden Bug Report kommentieren sehen, welcher jedoch sofort geschlossen wurde.

    https://github.com/joomla/joomla-cms/issues/44299 und habe direkt zur Version 4.3 einen Kommentar hinterlassen

    [5.3][SEF] Elimination of duplicate pages, SEO improvements: redirects for IDs and www, canonical links · Issue #44310 · joomla/joomla-cms
    Is your feature request related to a problem? Please describe. Even though Joomla 5.2 has some new settings to eliminate duplicate pages, there are still…
    github.com
  • Das spielt keine Rolle und ist auf jeder J5.2 Installation reproduzierbar.

    Nein, ist es nicht. Joomla.de ist z.B. auf 5.2 und hat offenkundig keinen Canonical.

    Kann es sein dass du im SEF Plugin einen Wert im Feld Website Domain hinterlegt hast? Das ist standardmäßig leer und es gibt für normale Seiten auch keinen relevanten Usecase, es würde, wenn gesetzt, aber das von dir beschriebene Verhalten erklären. Das war übrigens auch schon mindestens seit 4.x so und ist komplett unverändert.

  • Nein, ist es nicht. Joomla.de ist z.B. auf 5.2 und hat offenkundig keinen Canonical.

    Doch, um den - durchaus sinnvollen Canonical - zu erreichen (www ist eine andere Domain als ohne www) muss da ein Wert eingetragen werden. Lass ich das Feld leer, so verschwindet der Canonical auf allen Seiten.

    Ich vermute noch immer, dass es sich wohl um einen Bug handelt, denn setzt du diesen Wert, kannst du alles hinter die URL schreiben und es wird Canonical, auch das ist - glaube ich - nicht im Sinne des Erfinders.

    Beispiel - alle drei Seiten sind erreichbar und nicht durch einen Canonical deklariert, welche Seite soll die Suchmaschine als einzigartig bewerten?

    https://www.joomla.de/ueber-joomla/anforderungen/

    https://www.joomla.de/ueber-joomla/anforderungen

    https://www.joomla.de/ueber-joomla/anforderungen?irgendwas

    So sollte es sein:

    /ueber-joomla/anforderungen

    Code
    <link rel="canonical" href="/ueber-joomla/anforderungen">

    /ueber-joomla/anforderungen/

    Code
    <link rel="canonical" href="/ueber-joomla/anforderungen">

    ueber-joomla/anforderungen?irgendwas

    Code
    <link rel="canonical" href="/ueber-joomla/anforderungen">

    Scheinbar ist das Wirkungslos?

  • Ok, dann stellen wir doch erstmal zwei Sachen fest:

    1. das Verhalten hat nichts mit den letzten Updates oder der Pagination-Thematik zutun
    2. es betrifft in der Tat nicht "jede Joomla Seite" sondern eben nur die, wo das gennante Website Domain Feld im SEF Plugin gefüllt ist

    Jetzt zu der Funktion des Felds: das Problem, das du lösen möchtest, kann mit diesem Feature nicht gelöst werden, es hat nämlich eine anderen Usecase.

    Der Usecase für dieses Feld ist das Szenario "eine Website, mehrere Domains, keine Redirects", also eine Joomla Seite die z.B. über domain.tld und domain2.tld gleichermaßen erreichbar ist. Um hier duplicate content Probleme zu vermeiden, kann über das genannte Feld die primäre Website Domain festgelegt werden. Joomla setzt dann diese primäre Domain vor die aktuell aufgerufene URL um klar zu machen, dass diese konkrete URL ihre primäre Quelle auf einer anderen Domain hat. Dabei erfolgt keine Prüfung, ob an der URL noch "unnötige" Query Parameter dran hängen, es ist eine ganz stumpfe Logik.

    Wir müssen nicht darüber diskutieren, dass dieses Feature durch seine stumpfe Implementierung in 99% der Fällen mehr Probleme schafft als es Lösungen erzeugt. Deswegen ist das Feature höchst umstritten und zur Entfernung angezählt.

    Das was du willst, "korrekte" (self referencing) Canonicals für die gesamte Seite, ist im Joomla Core bisher nicht abgebildet. Das hängt vor allem damit zusammen, dass Joomla zwischen Menüstruktur und Contentstruktur unterscheidet und du dadurch einen Artikel an mehreren Stellen mit unterschiedlichen URLs einbinden kannst - und es dadurch schwer (oder genauer: unmöglich) ist, den "primären" Link für den Canonical automatisch zu bestimmen.

    Schau dich mal im Bereich der Dritterweiterungen um. Es gibt einige Canonical Plugins, die das Problem zu lösen versuchen, da hast du den besseren Anhaltspunkt.

  • Schau dich mal im Bereich der Dritterweiterungen um. Es gibt einige Canonical Plugins, die das Problem zu lösen versuchen, da hast du den besseren Anhaltspunkt.

    Ich danke dir für die Ausführungen. Ich dachte mir das bereits, dennoch sind die Umschreibungen höchst missverständlich (www und ohne www sind zwei unterschiedliche Domains) und dass an jede Seite mit jedem Parameter ein Canonical gehängt wird, ist nicht im Sinne des Erfinders, wenn es aber sowieso angezählt ist, dann ist die Problematik wohl bekannt und man kann auf die 6.er Version hoffen.

    Ich bin kein großer Freund von Plugins, aber ich werde wohl nach dem Pagination Bug darauf zurückgreifen müssen.


    Hast du noch eine Ahnung, warum die Strikte Weiterleitung nicht so funktioniert, wie beschrieben? Denn das wäre ja eigentlich die gewünschte Lösung, wenn die unendliche Vielzahl an möglichen URL´s gar nicht mehr auftritt.

  • > Hast du noch eine Ahnung, warum die Strikte Weiterleitung nicht so funktioniert, wie beschrieben? Denn das wäre ja eigentlich die gewünschte Lösung, wenn die unendliche Vielzahl an möglichen URL´s gar nicht mehr auftritt.

    Auch dieses Feature hat einen anderen Usecase: da geht es darum, dass nicht SEF-URLs ("index.php?option=com_content&view=article...") und teil-SEF-URLs (/component/content/article/1) auf ihre "schöne" URL-Variante umgeleitet werden.

    Deine Wunschvariante, also "leite so um, dass alle unnötigen Query Parameter weg sind", scheitert an einem Grundproblem: niemand weiß, welche Query Parameter "unnötig" sind. Selbst wenn eine Artikelseite einen Parameter nicht braucht, ist dort vielleicht ein Modul eingebunden für den der Parameter relevant ist.

  • Deine Wunschvariante

    Das Problem, es ist nicht meine Wunschvariante, sondern sollte Standard sein. Einige der großen Webseiten, die ich zu der Problematik untersucht habe, leitet irrsinnige Parameter entweder auf 404 um (spiegel.de) oder macht zumindest einen korrekten canonical daraus (heise.de). Wobei ich bei Drupal und Wordpress auf die gleiche Problematik wie bei Joomla gestoßen bin

    Ich wünschte mir dann tatsächlich, dass der Hilfetext das ausdrücklich so beschreibt, denn setzt du diese Parameter falsch ein (so wie ich), lässt sich der Schaden nur noch mit externen Plugins beheben. Das sollte meiner Meinung nicht passieren, zumal zuvor durch den Bug mit der Pagination eine irrsinnige Anzahl an duplizierten Seiten zustande gekommen sind (bei mir binnen 3 Tagen ~4.000) und diese jetzt auch canonical sind....

    Seitdem erlebt die eine Seite erhebliche Schwankungen in den Suchergebnissen und man kommt kaum noch hinterher, die falschen Parameter zu korrigieren.

  • Einige der großen Webseiten, die ich zu der Problematik untersucht habe, leitet irrsinnige Parameter entweder auf 404 um (spiegel.de) oder macht zumindest einen korrekten canonical daraus (heise.de).

    Diese Websites sind aber halt auch keine Seiten die auf einem generischen CMS basieren, sondern Individualentwicklungen mit eigenem Dev-Team bei dem völlig klar ist, was wie und wo in welcher Zusammenstellung zum Einsatz kommt. Das ist bei generischen CMS eben nicht der Fall, woraus sich eine völlig andere Ausgangslage ergibt.

    Ich wünschte mir dann tatsächlich, dass der Hilfetext das ausdrücklich so beschreibt, denn setzt du diese Parameter falsch ein (so wie ich), lässt sich der Schaden nur noch mit externen Plugins beheben. Das sollte meiner Meinung nicht passieren, zumal zuvor durch den Bug mit der Pagination eine irrsinnige Anzahl an duplizierten Seiten zustande gekommen sind (bei mir binnen 3 Tagen ~4.000) und diese jetzt auch canonical sind....

    Da bin ich völlig bei dir! Wenn du hier konkrete Ideen hast, freut sich das Projekt über einen Pull-Request / Ticket / Vorschlag:

    joomla-cms/administrator/language/en-GB/plg_system_sef.ini at 5.2-dev · joomla/joomla-cms
    Home of the Joomla! Content Management System. Contribute to joomla/joomla-cms development by creating an account on GitHub.
    github.com