Mark: Content negotiation: welchen Status Code?

Hallo,

habe hier diesen sehr hilfreichen Artikel zum Ermitteln der Sprache des Browsers gefunden.

Jetzt möchte ich von meiner Startseite auf die Seite mit der passenden Sprache (falls vorhanden) weiterleiten (keine Sorge, dort gibt es dann auch noch die Möglichkeit, zu den anderen Sprachen zu kommen).

Was ich jetzt nur noch bräuchte, ist der richtige Status Code. Ich habe diese Seite mit den Status Codes gefunden, aber ich bin mir jetzt nicht sicher, welcher hier angebracht wäre. Ist da "300 Multiple Choices" richtig?

Mark

  1. Jetzt möchte ich ... weiterleiten ...

    ... der richtige Status Code...

    Temporär oder permanent - das ist die Frage. Statuscodes, die nicht weiterleiten, bringen dir nichts.

    1. Temporär oder permanent - das ist die Frage. Statuscodes, die nicht weiterleiten, bringen dir nichts.

      Naja, permanent, aber eben abhängig von der Sprache. D.h. ist die Sprache deutsch, soll permanent nach index_de.html weitergeleitet werden.

      1. Temporär oder permanent - das ist die Frage. Statuscodes, die nicht weiterleiten, bringen dir nichts.

        Naja, permanent, aber eben abhängig von der Sprache. D.h. ist die Sprache deutsch, soll permanent nach index_de.html weitergeleitet werden.

        Aber du hast ja nur eine einzige Start-URL - und die wird ja nicht permanent nach index_de.html weitergeleitet.

  2. Hallo,

    Ist da "300 Multiple Choices" richtig?

    Das ist auf jeden Fall die richtige Wahl, denn der Code 300 ist für solche Situationen gemacht.

    Ich würde:
    1.) mit "300 Multiple Choices" antworten
    2.) für den User gleichzeitig eine verlinkte Liste mit allen Optionen bereitstellen
    3.) für den User-Agent einen Location-Header mit jenem URI senden, den Du auf der Serverseite anhand von ACCEPT_LANGUAGE ausgewählt hast.

    lg
    Martin Dunst

    --
    Do what I say, not what I do.
    --Tim Berners-Lee
    1. Hallo Martin,

      2.) für den User gleichzeitig eine verlinkte Liste mit allen Optionen bereitstellen

      Der User wird ja direkt weitergeleitet. Oder wie meinst Du das?

      Mark

      1. hi,

        2.) für den User gleichzeitig eine verlinkte Liste mit allen Optionen bereitstellen

        Der User wird ja direkt weitergeleitet.

        Nein, das wird er nur dann, wenn sein Client das unterstützt und es diesem auch erlaubt ist, solchen Weiterleitungen ohne weiteres zu folgen.

        Falls nicht, bekommt der Nutzer erwähnte Liste zu sehen, und kann selber auswählen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo,

          Der User wird ja direkt weitergeleitet.

          Nein, das wird er nur dann, wenn sein Client das unterstützt und es diesem auch erlaubt ist, solchen Weiterleitungen ohne weiteres zu folgen.

          Falls nicht, bekommt der Nutzer erwähnte Liste zu sehen, und kann selber auswählen.

          OK, wie hat denn diese Liste auszusehen? Und wie mach ich das mit PHP?

            
          header($_SERVER['SERVER_PROTOCOL'] . ' 300 Multiple Choices');  
          header('Hier also die Alternativen-Liste...');  
          header('location: '.$vom_skript_ausgewaehlte_seite);  
          
          
          1. hi,

            OK, wie hat denn diese Liste auszusehen?

            UL, LI, A ...?

            Und wie mach ich das mit PHP?

            header($_SERVER['SERVER_PROTOCOL'] . ' 300 Multiple Choices');
            header('Hier also die Alternativen-Liste...');

            // Nee, hier nicht. Nach den Headern, als HTML-Dokument

            header('location: '.$vom_skript_ausgewaehlte_seite);

              
              
            gruß,  
            wahsaga  
              
            
            -- 
            /voodoo.css:  
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            
            1. Hallo,

              // Nee, hier nicht. _Nach_ den Headern, als HTML-Dokument

              OK, alles klar, Danke!

              Mark

              1. Hallo,

                Zusätzlich ist es wahrscheinlich hilfreich, wenn Du den Server ein Cache-Control: no-cache senden läßt.

                lg
                Martin Dunst

                --
                Do what I say, not what I do.
                --Tim Berners-Lee
    2. Hallo,

      Ist da "300 Multiple Choices" richtig?

      Das ist auf jeden Fall die richtige Wahl, denn der Code 300 ist für solche Situationen gemacht.

      Nochmal darüber nachgedacht, erscheint mir das doch nicht ganz richtig. Es sind hier ja nicht "Multiple Choices", sondern eben nur eine, die vom Skript anhand der Client-Sprache ermittelt wurde. Demnach ist "303 See Other" vielleicht passender!?

      Mark

      1. Hallo,

        Demnach ist "303 See Other" vielleicht passender!?

        Wenn es sich um verschiedene (Sprach-) Versionen desselben Inhalts handelt, dann ist "300 Multiple Choices" sicher die optimale Wahl.

        lg
        Martin Dunst

        --
        Do what I say, not what I do.
        --Tim Berners-Lee