Besucher nach Herkunft/Sprache weiterleiten

  • Hallo!

    Auf den grossen Sites sieht man das oft: Es gibt eine hauptdomain, z.b. .com, wenn ich als Deutscher dann auf die Seite gehe werde ich automatisch auf die deutsche seite der entsprechenden firma oder webpräsenz geleitet. Bei google ist das auch so, geht man hier aus deutschland auf z.b. http://www.google.it, kommt man trotzdem auf die deutsche google seite.
    Das möchte ich auf meiner hp auch machen, möglichst sollten alle deutschen besucher auf eine seite, und alle aus dem usa auf eine andere seite weitergeleiter werden.

    Hat jemand ne ahnung, wie man das machen könnte?? Danke

  • Ichhab mir dafür ein Javscript geschrieben (für deutsch, englisch, französisch und italienisch).
    Man kann es aber beliebig jeder weiteren Browsersprache anpassen.

    Ich kopiere es hier einfach mal kommentarlos rein, wenn du fragen hast, dann biddeschön:


    Ich würde das Script heute zwar kürzer machen (mit einem Array der gültigen Sprachen), hab jetzt aber keine Lust es umzubauen. Vielleicht kommst du ja auch so damit klar.

    G.a.d.M.

    Ronald

  • Salut,

    und was machen Benutzer, die kein JavaScript (aktiviert) haben?

    Der Browser schickt in der Anfrage an den Server mit, welche Sprachen er bevorzugt. Das ist der Accept-Language Header (RFC). In PHP lässt sich das relativ einfach Auslesen ($HTTP_ACCEPT_LANGUAGE).
    Und dann musst du den Browser nur noch weiterleiten:

    Code
    header("Location: http://www.example.com/");
    exit();

    Stefan

  • Hallo,
    ok, danke schonmal für das Script! Sieht ja garnicht soo komplitziert aus :)
    Nun die Fragen: WO ist denn da festgelegt, wohin geleitet werden soll? Also wo trage ich meine Seite ein, an die der entsprechende "Ausländer" geleitet wird?
    Und was passiert mit den Usern, die in deinem Fall, nicht aus D, England Italien oder Frankreich kommen?

    Danke!

  • Code
    new_main = "main.php?lang=" + spr;

    Das ergibt eine URL mit einer angehängten get-Variablen, z.b. für deutsch sieht die Zieladresse dann so aus "main.php?lang=de".
    In PH kann man sich dann z.B. mit $_GET['lang'] den Wert zurückgeben lassen und die entsprechende Seite oder Textdatenbank laden.

    Übermittelt wird das ganze mit der

    Code
    function langu()
      {
      self.location.href = new_main;
      }

    welche wiederum automatisch nach 1 Sekunde aufgerufen wird:

    Code
    window.setTimeout("langu()",1000);

    Zu deiner Frage was passiert, wenn keine der Sprachen zutrifft, bzw. wenn Javascript deaktiviert ist:
    ich hab am Anfang des Scriptes die Sprache auf französische gesetzt, genau hier:

    Code
    spr = "fr";

    Wenn dieser Wert nicht durch das Javascript in de, en oder it überschrieben wird, dann wird die HP in französisch geöffnet (das Script ist auch für eine franz. HP). Sicherheitshalber kontrolliert allerdings das PHP-Script noch einmal, ob eine bekannte Sprache vorliegt - wenn nicht, dann eben immer französisch.

    Wenn du ohne PHP arbeiten willst, dann kannst du das Script entsprechend abwandeln. Laß die Sprachen wie gehabt erkennen, tausch nur de und fr au, wenn die HP hauptsächlich in deutsch ist.

    Statt

    Code
    new_main = "main.php?lang=" + spr;

    könntest du z.B.

    Code
    new_main = "index_" + spr + ".html";


    nehmen, was dann für französisch z.B. eine Seite "index_fr.html" aufrufen würde.
    Da kannst dir die URL mit Javascript zusammenbasteln wie du möchtest.

    Das hört sich ein wenig kompliziert an - ist aber im Grunde alles ganz einfach.

    G.a.d.M.

    Ronald