Spracherkennung mit 301 oder 302
Hallo allerseits,
bei einer mehrsprachigen Website lasse ich beim Aufruf von domain.tld per $_SERVER['HTTP_ACCEPT_LANGUAGE'] die bevorzugte Sprache des Nutzers ermitteln und dann entsprechend weiterleiten, z.B. auf domain.tld/de/ oder domain.tld/en/ (selbstverständlich gibt es auf jeder einzelnen Seite die Möglichkeit, die Sprache "manuell" zu wechseln). Nun überlege ich allerdings, ob ich als Statuscode 301 oder 302 senden soll, denn ideal ist beides nicht - 301 ist nicht wirklich zutreffend und 302 nicht optimal für Google (da möglicher Duplicate Content). Was würdet Ihr tun? Schöne Grüße, Heiko |
Ich sehe kein Problem einer permanenten Weiterleitung, wenn du diese an die Bedingung bei der Sprachvereinbarung knüpfst:
Code:
HTTP/1.1 301 Moved Permanently |
Ich hab' bisher nur deutsche Seiten gemacht, aber was würdest Du vom 300er halten?
Dieser steht ja für MultipleChoice und im Prinzip ist es das ja. Im Location-Header kann man die bevorzugte Resource angeben, sollte also auch vom Client entsprechend umgeleitet werden, probiert habe ich es allerdings nicht. |
Ich würde auch den 300er verwenden. Die Seite wurde nicht verschoben, schon gar nicht temporär.
|
300 verstehe ich allerdings eher als "keine eindeutige Antwort möglich, daher mehrere Optionen zur Auswahl". Aber wenn ein Browser eine Anfrage mit Deutsch als bevorzugter Sprache sendet, und der Server kann ihm eine deutsche Seite geben und leitet auch direkt dorthin weiter, sehe ich das schon als klare Antwort (und demzufolge ohne "Multiple Choices").
|
Ich sehe das so, dass der Browser eine englische Seite anfordert, er aber eigentlich deutsch bevorzugt.
Der Server teilt dem Browser dann erstmal mit, dass es unter der angeforderten Resource mehrere (Sprach-)Versionen gibt und die (vom Browser) bevorzugte Version im Location-Header angegeben ist, der Browser leitet entsprechend um. Ist bereits die bevorzugte (Sprach-)Version angefordert worden, gibt's natürlich einen 200er, wobei die bevorzugte (Sprach-)Version auch eine manuell eingestellte Version sein kann. Also Browser sendet deutsch, Benutzer hat manuell englisch eingestellt, dann sollte die englische Version mit einem 200er ausgeliefert werden und die deutsche mit einem 300er. Naja, sind meine ersten Gedanken dazu, aber das scheint für mich (momentan) schlüssig. Zitat:
|
Zitat:
Die Abfrage findet also nur statt, wenn domain.tld angefragt wird, und evtl. zusätzlich noch bei ungültigen Anfragen (ggf. auch nur bei fehlender "Sprachkomponente" in der URL), damit eine Fehlermeldung in der passenden Sprache ausgeliefert werden kann. Und fragt ein Browser domain.tld an, mit Deutsch als bevorzugter Sprache, ist die Weiterleitung an die deutsche Version der Seite auch eine eindeutige Antwort und daher imho kein wirklicher 300. |
Zitat:
|
Zitat:
|
Zitat:
|
Und wenn das Dokument in englisch und deutsch vorliegt und der Client beide Sprachen akzeptiert, dann hat man mehrere Möglichkeiten.
Auch wenn nur eine Sprache zutrifft halte ich einen 300er für gerechtfertigt. Es gibt das Dokument in mehreren Sprachen und somit hat man auch eine Auswahlmöglichkeit. Wenn der Browser eine Sprache als bevorzugt ausweist, dann muss das nicht unbedingt mit dem Wunsch der Person vor dem Rechner übereinstimmen. |
In dem Fall ist es aber keine Sprachvereinbarung mehr. Oder willst du doch das bevorzugte Ziel mittels Location-Header-Feld angeben?
|
Danke für die interessanten Meinungen. Ich finde Gumbos Vorschlag am sinnvollsten, zum 301 einen Vary-Header hinzuzufügen, der besagt, dass das Dokument aufgrund der erfolgreich durchgeführten Sprachvereinbarung tatsächlich permanent an anderer (eben der Sprachvereinbarung entsprechender) Stelle zu finden ist (auch wenn es strenggenommen nicht "moved" - d.h. verschoben - wurde).
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:01 Uhr. |
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
© Dirk H. 2003 - 2023