Plugin xlang_XH für CMSimple_XH
Die Funktionserweiterung xlang_XH dient der Suchmaschinenoptimierung (SEO - search engine optimization) unter CMSimple_XH.
Das Plugin erstellt hreflang-Links für Sprach- oder Regions-URL und Kanonische Links.
Nach meinem Verständnis können die hreflang-Attribute auch bei einsprachigen Webseiten nicht schaden.
hreflang-Links
(konfigurierbar --> aktiviert / deaktiviert)
Ausnahme:
Wenn Parameter aus Canonical - Get x zutreffen und / oder index.php in der URL enthalten ist.
<link rel="alternate" hreflang="x-default" href="http://...tld/?Languages" />
<link rel="alternate" hreflang="da" href="http://...tld/da/" />
<link rel="alternate" hreflang="en" href="http://...tld/en/" />
...
Zusätzlich zum x-default-Eintrag die CMSimple_XH-Defaultsprache als hreflang-Eintrag setzen.
(konfigurierbar --> aktiviert / deaktiviert)
<link rel="alternate" hreflang="x-default" href="http://...tld/?Languages" />
<link rel="alternate" hreflang="de" href="http://...tld/?Languages" />
<link rel="alternate" hreflang="da" href="http://...tld/da/" />
<link rel="alternate" hreflang="en" href="http://...tld/en/" />
...
... Im Fall von Auswahlmenüs für Sprache bzw. Land oder bei Startseiten, die automatisch weiterleiten, sollten Sie zudem eine Annotation für den hreflang-Wert "x-default" hinzufügen.
...
Die hreflang-Links werden nicht gesetzt, wenn die Seite mit Get-Parametern aufgerufen wird, die in einer Blacklist enthalten sind.
Die Parameter sind konfigurierbar --> Hreflang - Get exceptions
(Grundeinstellung: login|logout|print|realblog_page)
Polyglott_Xh (Polyglott_XH auf GitHub) ist für mehrsprachige Webseiten auf jeden Fall die bessere Wahl für das Sprachmenü.
Hier ist auch eine direkte Zuordnung zwischen den einzelnen Sprachen möglich. Zusätzlich werden dabei auch die hreflang-Links korrekt gesetzt.
xlang_XH sollte dann nur noch für den Canonical Link genutzt werden!
Canonical Link
(konfigurierbar --> none, min, max)
min
- wenn die Startseite nicht nur mit domain.tld/, sondern mit domain.tld/?Startseite aufgerufen wird, wird der Kanonische Link auf domain.tld/ gesetzt.
<link rel="canonical" href="http://www.domain.tld/" />
- wenn die Seite mit domain.tld/index.php?Seite aufgerufen wird, wird der Kanonische Link gesetzt.
<link rel="canonical" href="http://www.domain.tld/?Seite" />
- wenn die Seite mit domain.tld/?Level_1%2FLevel_2%2FLevel_3 statt domain.tld/?Level_1/Level_2/Level_3
aufgerufen wird, wird der Kanonische Link gesetzt.<link rel="canonical" href="domain.tld/?Level_1/Level_2/Level_3" />
Diese encodierten Links können durch Dientse wie Facebook o.ä. in Umlauf kommen. - wenn die Seiten mit Get-Parametern aufgerufen wird, wird jeweils der Kanonische Link gesetzt.
Die Parameter sind konfigurierbar --> Canonical - Get x
(Grundeinstellung: login|logout|normal|selected|xh_mailform_subject|realblog_title
|realblog_search|realblog_story|search|function|handheld_full)
Die unter Canonical - Get x angegebenen Parameter werden für den Canonical-Link aus der URL entfernt.
!!! Canonical - Get x wird auch bei der Einstellung max und den hreflang-Links beachtet. !!!
Wenn print als Parameter unter Get x angegeben wird, dann sollte in der Druckvorschau nicht der Meta-Tag:meta name="robots" content="noindex"
angegeben werden!
Wer keine Änderungen an CMSimple_XH durchführen möchte, der sollte print hier nicht angeben!
max
- Der Kanonische Link wird immer gesetzt, auch selbst referenzierend.
Ausnahme:
Wenn die Seite mit Get-Parametern aufgerufen wird, die in einer Blacklist enthalten sind.
Die Parameter sind konfigurierbar --> Canonical - Get exceptions
(Grundeinstellung: print|realblog_page)
Zusätzliche Erläuterungen
Einzelne Parameter z.B. per robots.txt zu sperren bringt nur bedingt einen Nutzen.
Diese Einträge in der robots.txt
- Disallow: /*?selected=*
- Disallow: /*?search=*
bringen über kurz oder lang ein Ergebnis wie etwa:
Da die Bots (die sich überhaupt daran halten) die Seite nicht besuchen dürfen, gibt es keine Beschreibung. Die URL selbst bleibt aber im Index.
Der bessere Weg ist also, einen Canonical Link zu setzen, damit die Bots wissen, der eigentliche Inhalt ist unter einer anderen URL zu finden. Das vermeidet Doppelten Content und diese URLs werden aus dem Index verschwinden bzw. in diesem gar nicht erst erscheinen.
Andere Möglichkeiten, Doppelten Content auf der Webseite zu bekommen oder zu haben, sind unter anderen, die Parameter xh_mailform_subject oder handheld_full.
Was passieren kann, wenn der Kanonische Link bei den entsprechenden Parametern nicht gesetzt wird, zeigen folgende zwei Beispiele. Im ersten Fall sind es drei, im zweiten zwei verschiedene URLs für jeweils die gleiche Seite, also mit gleichem Inhalt (Duplicate Content).
Installation
PHP ab Version 5.3
(Sie sollten min. Version 5.6 einsetzen!, Stand 01/2018)
Version 1.2 für CMSimple_XH Versionen 1.6.7 - 1.6.10 (auch wenn das Plugin bei 1.6.10 eine abweichende Meldung bringt).
Version 1.4.1 für CMSimple_XH Versionen 1.7.0 - 1.7.2.
Um das Plugin zu installieren, einfach den entpackten Ordner xlang in den Pluginordner laden.
Möglicherweise, abhängig vom Webserver müssen noch Dateirechte angepasst werden.
Wird PHP als CGI oder FastCGI ausgeführt, ist ein Anpassen der Dateirechte nicht notwendig.
Wenn PHP als Apache-Modul ausgeführt wird, müssen noch Rechte für
folgende Dateien:
- die Konfigurationsdatei (/plugins/xlang/config/config.php)
- und die entsprechende(n) Sprachdatei(en) (/plugins/xlang/languages/xx.php)
geändert werden (0666), falls man diese über das Backend bearbeiten möchte.
Die Ordner:
- /plugins/xlang/languages/
- /plugins/xlang/config/
benötigen in diesem Fall 0777.
FileZilla Client Tutorial (de)
- 644 - der Standardwert für Dateien - nur der FTP-Benutzer kann Dateien ändern / schreiben
- 666 - auch PHP-Prozesse können Dateien beschreiben.
- 755 - der Standardwert für Ordner - nur der FTP-Benutzer kann Dateien ändern / schreiben
- 777 - der Ordner hat Vollzugriff, d.h. auch Scripte können darin schreiben.
Fragen, Hinweise, Fehlermeldungen zu xlang_XH
Gern nehme ich auch Informationen entgegen, auf welchen Seiten das Plugin xlang_XH eingesetzt wird.
Ich möchte keine Statistik führen oder gar veröffentlichen. Es geht einfach darum, zu wissen, ob weiteres Arbeiten an diesem Plugin sinnvoll ist.
xlang_XH kann unter Einhaltung der GPLv3 verwendet werden.
Es sollte daher immer versucht werden, die aktuellste Version einzusetzen!
Version 1.2 für CMSimple_XH Versionen 1.6.7 - 1.6.10. (eingestellt)
Version 1.4.1 für CMSimple_XH Versionen 1.7.0 - 1.7.2.
Update ab Version 1.2 auf 1.4.1
Softwareentwicklung ist teilweise sehr aufwendig und findet, für jede hier angebotene Software, in meiner Freizeit statt. Daher freue ich mich über jede Unterstützung. Zum Teil wird damit z.B. einfach diese Website finanziert.
Außerdem bringt eine kleine Anerkennung zwischendurch immer wieder etwas Schwung in die Entwicklung.