Hreflang richtig einsetzen?

Wir haben mehrsprachige Domains und würden gerne die Besucher von google auf die richtige Seite leiten.

In der base.tpl steht bei uns das:


    <link rel="alternate" hreflang="de-at" href="http://www.domain.at" />
    <link rel="alternate" hreflang="fr-fr" href="http://www.domain.fr" />
    <link rel="alternate" hreflang="de-de" href="http://www.domain.de" />

Wenn ein Produkt nun aufgerufen wird sollte der hreflang Snippet auch richtig generiert werden.

Das weiß ich aber nicht mit welchem Code ich das dynamisch erstellen kann.

Könnt ihr mit bitte weiterhelfen?

Grüße, kiwi

Wir benutzen diesen Code


[{if $oView->isLanguageLoaded()}]
	[{foreach from=$oxcmp_lang item=_lng}]
	<link rel='alternate' hreflang='[{$_lng->abbr }]' href='[{$_lng->link|regex_replace:"/(\?|&)?force_sid=.*/":""}]' />
	[{/foreach}]
[{/if}]

Ist nicht 100% perfekt (z.B. auf der Startseite, wo ein canonical das dann wieder gerade zieht), tut aber im großen und ganzen was er soll.

Hallo msslovi0,

ich habs ausprobiert und der Code funktioniert wenn man mehrere Sprachen in einem Shop auf einer Domain benutzt.

Weißt du auch wie der Code aussehen muss, wenn man die Sprachenverwaltung im Shop nicht nutzt, sondern für jeden Shop eine spezielle Länderdomain getrennt hat?

Beispiel:
<link rel=“alternate” hreflang=“de-DE” href=“http://www.domain.de/kategorie/nuesse.html” />
<link rel=“alternate” hreflang=“de-AT” href=“http://www.domain.at/kategorie/nuesse.html” />
<link rel=“alternate” hreflang=“de-CH” href=“http://www.domain.ch/kategorie/nuesse.html” />

Grüße,

Wir haben verschiedene Sprachen auf verschiedenen Domains, da geht das. Woher kommen denn deine Domaininformationen wenn nicht aus der Sprachenverwaltung?

Wie kann ich denn die Domaininformationen aus der Sprache mit unterschiedlichen ccTLD’s verknüpfen?

In den Spracheinstellungen kannst du doch für jedes Land eine Base URL angeben. Das kann auch einfach nur eine TLD sein.

Oh, das hatte ich gar nicht gesehen.

Die Urls sehen jetzt aber so aus:
<link rel=“alternate” hreflang=“de-DE” href=“http://www.domain.de/kategorie/nuesse.html” />
<link rel=“alternate” hreflang=“de-AT” href=“http://www.domain.at/de-at/kategorie/nuesse.html” />
<link rel=“alternate” hreflang=“de-CH” href=“http://www.domain.ch/de-ch/kategorie/nuesse.html” />

Der Shop schreibt uns immer das Sprachkürzel hinter die Domain.

Wie bekomme ich das noch weg, oder mach ich immer noch was falsch?

Wir haben dafür ein Modul geschrieben, dass addLanguageParam() überschreibt. Wir haben aber auch wirklich unterschiedliche URLs, da die Sprachen verschieden sind. Ich hab keine Ahnung wie sich der Shop verhält wenn die URLs bis auf die TLD gleich sind.

Gibt es schon dazu eine zufrieden stellende Lösung?
Ich habe testeweise bei mir die oben genannte Lösung eingefügt und Google mahnt an das die “Internationale Ausrichtung | Sprache > “de-DE” – keine Rücklinks” hat.
Genauso auch “Internationale Ausrichtung | Sprache > “en-GB” – keine Rücklinks”

Ich habe das mal wieder rausgenommen. Eigentlich ist Oxid dafür verantwortlich. Weil von Haus aus Oxid kein hreflang Link-Attribut Markup eingebaut hat. Da gibt es von sistrix eine Testseite da kann jeder das testen.

Also wie kann man in den base.tpl Code das sauber einbauen?

Hier keine Probleme mit meinem oben geposteten Code. Wie sieht denn dein Quelltext dazu aus?

Das hier wäre eine kleine Lösung von mir:


    [{block name="head_links_hreflang"}]
    [{if $oView->isLanguageLoaded()}]
    [{assign var="oConfig" value=$oViewConf->getConfig()}]
    [{foreach from=$oxcmp_lang item=_lng}]
    [{if $_lng->id == $oConfig->getConfigParam('sDefaultLang')}]
<link rel="alternate" href="[{$_lng->link|replace:'/startseite/':''}]" hreflang="x-default">
    [{/if}]
<link rel="alternate" href="[{$_lng->link|regex_replace:"/(\?|&)?force_sid=.*/":""}]" hreflang="[{$_lng->abbr}]">
    [{/foreach}]
    [{/if}]
    [{/block}]

Grüße
Rafig

Keine Ahnung was ich falsch gemacht hatte. Jetzt funktioniert es. Denke ich zumindest. Mal schauen was die Jungfrau Googline sagt.

Hier mal die Ausgabe aus dem Quelltext, wie es nacher aussieht.


Die Startseite

<link rel="alternate" href="http://www.xxxx.de/de/" hreflang="x-default">
    <link rel="alternate" href="http://www.xxxx.de/de/" hreflang="de">
        <link rel="alternate" href="http://www.xxxx.co.uk/en/" hreflang="en">

        Eine Unterseite

        <link rel="alternate" href="http://www.xxxx.de/meineunterseite/" hreflang="x-default">
    <link rel="alternate" href="http://www.xxxxx.de/meineunterseite/" hreflang="de">
        <link rel="alternate" href="http://www.xxxx.co.uk/en/myunderside/" hreflang="en">

Bei mir wird auf den Unterseiten seitens Oxid kein /de/ hinzugefügt. Wie sich das auswirkt und ob es sich überhaupt auswirkt weiß ich nicht.

Was sagt ein Experte dazu?

Ich finde das Oxid dieses ab den nächsten Update grundsätzlich mit einbauen sollte. Man muss wirklich jede Kleinigkeit nutzen um sich gegen den Suchmaschienenriesen zu behaupten.:frowning:

Ich vermute stark das du dieses mal den Kode von mir benutzt hast.

[B]1.[/B] Warum schreibst du bei domain.[B][B]de[/B][/B] noch einmal einen [B]/de/[/B] danach?

[B]2. [/B]Auch bei einer co.uk machst du dasselbe Fehler in dem du /en/ dazuschreibst. Bei co.uk Domain wird vermutlich die English Sprache Standard sein und hier zeigt OXID keinen [B]/en/ [/B]danach.

Lesen und verstehen:

[B]Ranking-Check[/B]

Grüße
Rafig

Hallo,

ich hab das auch noch nicht hinbekommen. Habe den CODE von Rafig gerade in die base.tpl geschrieben. Meine Ausgabe scheint mir nicht korrekt zu sein.

Was schreibt Ihr im Backend in den Grundeinstellungen --> Sprachen?

Wie wird es bei Domains zwischen de-de und de-at gemacht?

@OXID-Design

Dann logge dich mal in dein Admin rein und versuche die Kürzel zu löschen. Speichern geht nicht.

Und ich meine das von Haus aus (Oxid) das Kürzel “en” von irgendwoher eingefügt wird. Mals schauen ob ich das noch finde.

@kiwi
Um einen Modul kommen wir hier nicht drumherum. Ich schreibe Ihn gerade und werde Ihn heute oder Morgen laufe des Tages veröffentlichen.

@Medicus
Bei aller liebe du hast nicht verstanden worum es hier geht.

Wenn du bei einer .co.uk Domain OXID als Standard Sprache “English” installierst wird es eine Endung “/en/” nicht geben, warum denn auch. Erst beim umschalten auf die andere Sprache zum Beispiel Deutsche Sprache wird einen “/de/” geben.

Jetzt verständlicher?

Abgesehen davon muss man bei der Standard Sprache keinen Domain eintragen. Bei den allen anderen Sprachen NUR dann einen Domain eintragen wenn das vom Standard-Domain abweicht. Ein kleines Beispiel:

meindomain.de / DE / Kein Domain eintragen.
meindomain.de / EN / Kein Domain eintragen.
meindomain.de / FR / Kein Domain eintragen.
meindomain.co.uk / EN / meindomain.co.uk
meindomain.fr / FR / meindomain.fr

usw.

Grüße
Rafig

Ja, du hast recht. Ich verstehe das wirklich nicht. Zumal ich bei Deutsch keine Url angegeben habe. Zur Veranschaulichung mal ein Screenshot aus den Admin.

Hier die Sprache Deutsch:

Hier die Sprache Englisch:

Jetzt muss ich mich fairerweise bei dir Entschuldigen weil ich dachte du hast “/en/” manuell eingetragen.

Also, langer Rede kurzer Sinn Morgen haben wir einen Modul und ich hoffe dadurch wird es einiges besser.

Grüße
Rafig

Das mache das Modul nicht nur technisch korrekt. Ich bin mir nicht ganz sicher ob die Haupturl ein x-default braucht. Oder ob das nicht sogar schädlich ist.

Ach auf der Startseite ist die hreflang un die canonical unterschiedlich.

<link rel=“alternate” href=“http://www.xxxx.de/de/” hreflang=“de”>

   &lt;link rel="canonical" href="http://www.xxxx.de/"&gt;

[QUOTE=Medicus;177935]Das mache das Modul nicht nur technisch korrekt.[/QUOTE]

Was bedeutet das?

[QUOTE=Medicus;177935]Ich bin mir nicht ganz sicher ob die Haupturl ein x-default braucht. Oder ob das nicht sogar schädlich ist.[/QUOTE]

Lesen und verstehen:

[B]Hreflang[/B]

[QUOTE=Medicus;177935]Ach auf der Startseite ist die hreflang un die canonical unterschiedlich.

<link rel=“alternate” href=“http://www.xxxx.de/de/” hreflang=“de”>
[/QUOTE]

Das ist nur bei dir so. Installationsfehler?

Grüße
Rafig