Wenn GeoIP versagt: Schweizer Nutzer zuverlässig erkennen
Wie wir die Ländererkennung auf VINUM.eu mit Accept-Language-Headers als Fallback verbessert und die Fehlerkennungsrate bei Schweizer Nutzern deutlich gesenkt haben.
Wenn GeoIP versagt: Wie wir Schweizer Nutzer auf VINUM.eu zuverlässig erkennen
VINUM.eu betreibt mehrere Ländereditionen – CH, DE, FR und EN – und leitet Besucher beim ersten Aufruf automatisch anhand ihrer IP-Adresse auf die passende Edition weiter. Klingt einfach, funktioniert in der Praxis aber nicht immer. Besonders bei Schweizer Nutzern.
Die Herausforderung
Während eines Seminars in Zürich fiel auf, dass ein Grossteil der Teilnehmer trotz Schweizer Standort auf die deutsche Edition von VINUM weitergeleitet wurde. Die Ursache: GeoIP-Datenbanken erreichen für Schweizer IP-Adressen nur eine Trefferquote von rund 78 %.
Die Gründe dafür sind vielfältig:
- VPN-Nutzung: Viele Schweizer Unternehmen und Privatnutzer verwenden VPN-Dienste mit Endpunkten in Deutschland.
- CGNAT (Carrier-Grade NAT): Mobilfunkanbieter teilen sich IP-Blöcke über Landesgrenzen hinweg.
- Swisscom-IP-Blöcke: Teile der von Swisscom genutzten IP-Ranges sind in Datenbanken fälschlicherweise Deutschland zugeordnet.
Das Ergebnis: Mehr als jeder fünfte Schweizer Besucher landete auf der falschen Länderseite – ein Problem für User Experience und Conversion gleichermassen.
Unsere Lösung
Accept-Language als Fallback-Signal
Browser senden bei jedem Request einen Accept-Language-Header mit, der die bevorzugten Sprachen und Regionen des Nutzers enthält. Schweizer Browser liefern dabei typischerweise Subtags wie de-CH, fr-CH oder it-CH – unabhängig davon, welche IP-Adresse der Nutzer gerade hat.
Wir haben in TYPO3 die bestehende GeoipHelper.php um eine neue Methode hasSwissAcceptLanguage() erweitert. Diese prüft den Accept-Language-Header gegen eine Konstante SWISS_ACCEPT_LANGUAGE_SUBTAGS, die alle relevanten Schweizer Locale-Subtags enthält:
const SWISS_ACCEPT_LANGUAGE_SUBTAGS = ['de-CH', 'fr-CH', 'it-CH', 'rm-CH'];
Die Logik greift an zwei Stellen:
RedirectController::detectLanguageUid()– die initiale Weiterleitung beim ersten Seitenaufruf. Wenn GeoIP das Land als DE erkennt, derAccept-Language-Header aber einen Schweizer Subtag enthält, wird stattdessen auf/ch/weitergeleitet.LanguageController::popupAction()– das Popup zur Länderauswahl. Auch hier wird das Fallback-Signal berücksichtigt, damit der Nutzer direkt den richtigen Vorschlag sieht.
Der Vorteil: Der Accept-Language-Header ist bei jedem Request vorhanden, verursacht keine zusätzlichen Kosten und erfordert keinen externen Dienst.
UX-Verbesserungen bei der Länderauswahl
Zusätzlich haben wir die manuelle Länderauswahl überarbeitet:
-
Sprechende Labels: Statt der kryptischen Kürzel “CH DE FR” stehen jetzt die ausgeschriebenen Namen “Deutschland”, “Schweiz” und “Suisse romande” in der Auswahl. - Mobile Optimierung: Auf mobilen Geräten wurde die Länderauswahl in ein Dropdown im Header verschoben, statt sie im Footer zu verstecken.
Beide Massnahmen senken die Hürde für Nutzer, die trotz aller Automatik auf der falschen Edition gelandet sind.
Das Ergebnis
Die Kombination aus GeoIP und Accept-Language-Fallback löst 60–70 % der bisherigen Fehlerkennungen bei Schweizer Nutzern auf. Konkret bedeutet das:
- Keine zusätzlichen Kosten – der Accept-Language-Header ist bereits in jedem HTTP-Request enthalten.
- Keine Abhängigkeit von Drittanbietern – die Lösung läuft komplett serverseitig in TYPO3/PHP.
- Minimaler Implementierungsaufwand – eine neue Methode, eine Konstante und zwei Aufrufe in bestehenden Controllern.
Für die verbleibenden Fälle (z. B. Nutzer mit vollständig nicht-schweizerischer Browserkonfiguration hinter einem deutschen VPN) sorgt die verbesserte manuelle Länderauswahl dafür, dass der Wechsel zur richtigen Edition schnell und unkompliziert möglich ist.
Haben Sie ein ähnliches Problem?
GeoIP-basierte Weiterleitungen sind ein häufiges Muster bei mehrsprachigen Websites – und die Tücken liegen im Detail. Wenn Sie Probleme mit der Ländererkennung haben oder eine mehrsprachige TYPO3-Website planen, sprechen Sie uns an. Wir finden eine Lösung, die zu Ihrem Setup passt.
Über den Autor
Christopher Zechendorf
Christopher Zechendorf leitet die ext.dev GmbH und bringt über 25 Jahre Erfahrung in Webentwicklung, CMS-Systemen und Infrastruktur mit.