rel="canonical" in Contao verwenden

von Jan Theofel (Kommentare: 15)

Nutzung des Header-Tags rel="canonical" in Contao

Sogenannter "duplicate content" also Seiten mit gleichen Inhalten werden von Suchmaschinen wie Google nicht gerne gesehen. Idealerweise vermeidet man das - aber nicht immer lässt es sich vermeiden. In diesem Fall sollte mit dem Tag rel="canonical" im Seitenkopf definiert werden, welche Seite das "Original" ist. Diese Anleitung beschreibt, wie das mit Contao umgesetzt werden kann.

Beispiele bei denen so etwas nötig sein kann sind unter anderem: Inhaltsgleiche Seiten, die über Parameter umsortiert werden, gleichartige Firmen- oder Kontaktinformationen auf mehreren Unternehmenswebseiten, länderspezifische Webseiten mit gleichen Informationen, nur teilweise übersetzte Webseiten für andere Sprachen, ...

Eine ausführliche Erklärung zu rel="canonical" gibt es direkt bei Google. Hier nun eine Erklärung, wie dieser Tag in Contao gesetzt werden kann.

Benötigt:

  • Contao-Erweiterung rel-canonical (Hinweis: Die Versionsnummern der Erweiterungen entsprechen der unterstützen Contao-Version. Also 2.0.0 für Contao 2.11.x und 3.0.0 für Contao 3.x.)

Anleitung:

  1. Installiere die oben genannte Erweiterung über die Erweiterungsverwaltung von Contao. Installiere dabei die Version 2.x der Erweiterung für Contao 2.11 und 3.x für Contao 3.
  2. Pro Seite, für die ein rel="canonical" gesetzt werden soll, öffne diese in der Seitenstruktur und suche dort den Abschnitt "Tag rel canonical" (er sollte direkt nach denMetainformationen der Seite folgen). Wähle dort, ob die Originalseite (also die, auf die verlinkt werden soll) in der selben Installation liegt ("intern") oder auf einer anderen Webseite ("extern"). Anschließend kannst du dann entweder eine Seite aus dem Seitenbaum wählen oder eine externe URL eingeben.
  3. Möchtest du einen rel="canonical"-Tag wieder löschen, setzt du die Einstellung auf der Seite einfach wieder auf "nicht setzen".

Screenshots:

Hier noch einige Screenshots der Version für Contao 3. In Contao 2.11 sehen die Screens leicht anders aus, die Funktion ist aber identisch.

Seite ohne rel="canonical"
Inaktives rel canonical in Contao

Seite mit "internem" rel="canonical"
Internes rel canonical

Seite mit "externem" rel="canonical"
Externe rel-canonical-Angabe

Zurück

Einen Kommentar schreiben

Kommentar von Anton Meier |

Hallo Jan, super Sache!

Eine Frage hätte ich: wenn ich den Tag auf eine meiner Startseite (diese wird ja in Contao als Startpunkt einer Seite und als die nächste, untergeordnete startseite.html oder home.html definiert) setzen will – wie gehe ich da am besten vor?

Bearbeite ich die untergeordnete startseite.html oder home.html und wähle dann als Original den Startpunkt aus?

Antwort von Jan Theofel

Du gehst verweist immer auf eine Seite. Für die Startseite würde ich übrigens empfehlen, den Alias "index" zu verwenden. Dann hast du keinen Duplicate Content durch www.some.tl und www.some.tld/startseite.html. 

Kommentar von Anton Meier |

Danke für die schnelle Antwort!
Sollte ich dann auf rel="canonical" verzichten?

Antwort von Jan Theofel

Du meinst du willst von der Startseite wo anders hin per rel="canonical" verweisen? Oder dort hin? Beides kannst du ganz normal machen. In beiden Fällen die Startseite und nicht den Wurzelpunkt als Ziel eintragen bzw. dort den Verweis wo anders hin eintragen.

Kommentar von Anton Meier |

Mir geht es um den Startpunkt der Website und die untergeordnete, erste Seite (startseite.html oder home.html etc).

Beide erzeugen Duplicate Content.

Ich hatte bereits deinen Beitrag http://www.contao-anleitungen.de/post/duplicate-content-der-startseite-vermeiden.html gelesen. Die Erweiterung googlesitemap wird ab Contao 3.x im ER nicht ausgegeben.

Ich dachte der rel="canonical" Tag würde dieses Problem beheben können.

Antwort von Jan Theofel

Ah jetzt verstehe ich, was du meinst. Du meinst den Duplicate Content, von www.some.tld/ und www.some.tld/startseite.html. Das könntest du lösen, indem du bei der Startseite den rel canonical auf sich selbst setzt.

Eleganter ist es aber, dieser Seite wie oben beschrieben den Alias "index" zu geben. Dann verwendet Contao immer nur die Schreibweise www.some.tld/ und das Problem tritt gra nicht auf. Das sollte ich in dem alten Artikel mal anpassen.

Kommentar von Dieter Haskamp |

Wenn ich den rel canonical auf die selbe Seite setze dann meldet das Modul doch einen Zirkelbezug. Verstehe ich da was falsch?

Antwort von Jan Theofel

Wo soll da was gemeldet werden? In der Erweiterung selbst ist das keine Abfrage drin.

Kommentar von Nicky Hoff |

Hallo Jan, du hast sicherlich Recht, dass Contao selbst immer die Schreibweise www.some.tld/ benutzt, aber die Seite www.some.tld/index.html bleibt trotzdem weiterhin von extern aufrufbar (wenn ich Sie direkt in der Browserzeile eingebe), soweit ich das hier nachvollziehen kann.

Antwort von Jan Theofel

Danke für den Hinweis! Du hast damit Recht - das war mir bislang noch nicht aufgefallen. Dann sollte man das auf jeden Fall noch entsprechend weiterleiten.

Kommentar von Kim |

Was Dieter geschrieben hat, konnte ich heute auch reproduzieren: Ich habe die Seiten auf sich selbst gesetzt, wodurch ich den Fehler "Ungültiges Weiterleitungsziel (Zirkelbezug)!" erhalte.

Antwort von Jan Theofel

An welcher Stelle kommt das genau? Und mit welcher Contao-Version?

Kommentar von Geraldo |

Hallo Jan
für 2.10 mit der 2-er Version kann ich dieses Problem auch bestätigen

Antwort von Jan Theofel

Ich spreche Christian mal darauf an. Übermorgen treffen wir uns wieder, ich hoffe ich denke da dran.

Kommentar von Dieter Haskamp |

Hallo,
wenn man den canonical auf die Seite setzt in der man ihn einrichtet gibt es immer noch den Zirkelbezug. Ist das so gewollt?

Antwort von Jan Theofel

Das schadet meines Wissens nach nicht. Sollte die Seite aber mit URL-Parametern aufgerufen werden (warum auch immer) - so ist der korrekte rel-canonical gesetzt.

Kommentar von Irfan |

Hallo zusammen,

zunächst herzlichen Dank für die Erstellung dieses Artikels. Ich habe meine Website mit Contao umgesetzt, Xovi zeigt mir seit drei Wochen Dublcate Content bei den Referenzen (ca88 Seiten), die mit Meta Models erstellt wurden. Würde auch das Contao rel="canoncial" Extension wirken oder brauche Ich für die Behebung von DC eine Meta Models Extension? Bitte um Feedback, da ich nicht mehr weiterkomme.

Antwort von Jan Theofel

Das Modul bezeiht sich und funtkioniert nur mit Seiten. In deinem Fall müsste man prüfen, woher der DC eigentlich kommt und dann innerhalb von Metamodels eine Abhilfe schaffen. Vermutlich genügt ein einfache Fehlerbeseitigung oder eine Metamodels-Modul, welches mittels Inserttag in den Header eingebunden wird und das entsprechende rel-canonical setzt.

Kommentar von Irfan |

Hallo Jan,

besten dank für das schnelle Feedback. Vor dem Update meiner Website benutzte ich catalog, nach dem Update musste ich meta models benutzen. Davor bestand das DC Problem nicht, danach schon. Weisst Du welches Metamodels Modul ich genau downloaden muss?

Antwort von Jan Theofel

Du musst kein Modul herunterladen. Du müsstest ein Contao-Modul vom Typ Metamodel-Liste erstellen, dass für diesen Datensatz eine Headerzeile ausgibt und diese mittels Inserttag in den Header reinbauen. Wie genau kann ich aber ohne weitere Infos nicht sagen. Wahrscheinlich ist das ganze sowieso nur falsch konfiguriert und es reicht, wenn du den Fehler behebst und dann Weiterleitungen in der htaccess einträgst.

Kommentar von Stan |

Hallo Jan,
Also, das Problem worum es geht liegt darin, dass unsere Website mit Metamodels programmierte Seiten (88 Unterseiten an der Zahl) die gleichen Title Tags und die gleichen Description zuweist. Google nimmt das natürlich als Dublicate Content auf...kennst Du eine Lösung dafür? Mit Catalog hat alles bestens geklappt, bis wir auf Meta Models umsteigen mussten. Danke im Voraus. Grüße aus Berlin.

Kommentar von Christoph |

Zum Thema "Zirkelbezug":
Normalerweise muss man bei mehreren Domains die Option "externe Seite" wählen, um Google anzuzeigen: "Diese Seite (z. B.: meineseite/hauptseite1.html) ist meine Hauptseite (statt meine-seite/hauptseite1.html)
Wenn man auf der gleichen Domain mehrere Seiten gleichen Inhalts hat, nimmt man die Option "Interne Seite" und verweist in Contao auf die Seite, die einem am wichtigsten ist.

Kommentar von digital instinct |

super! nach einem solchen Tool habe ich schon lange gesucht, da es sonst doch recht umständlich wäre bei eigenen und Kundensystemen das umzustellen.
5 stars :)

Kommentar von Michel |

Danke für das Plugin, ist es möglich den canonical tag übers eigene Modul zu überschreiben? Brauche ich an ein paar Stellen.

Also wie es auch mit dem Seitentitel geht: $objPage -> pageTitle = $produkt["title"];

Kommentar von Robert |

Servus Jan,
viele Dank für die praktische Erweiterung. Eine Frage zur Handhabung bei News: Generell ist es ja sinnvoll, "Auf diese Seite" zu verweisen. Das Problem ist jedoch, dass bei Social Shares mit URL-Parametern diese dadurch auch im canonical-Tag übernommen werden. Die bessere Lösung wäre hier die Wahl "Externe Seite" und dort dann die News-URL eintragen. Oder gibt es eine Alternative?

Danke & Gruß,
Robert