Zur Navigation

Suchmaschinen-Bots und HTTP_ACCEPT_LANGUAGE

1 Rudy

Hallo,

nachdem ich schon viele dieser horrenden PR-killenden Javascript-Redirects a la

<script type=text/javascript>
<!--
url="http://www.domain.it/de/willkommen.asp";
if (navigator.appName == 'Netscape')
{var language = navigator.language}
else{
var language = navigator.browserLanguage}
var lang = ""
if (language.indexOf('de') > -1) url="de/willkommen.asp";
else if (language.indexOf('it') > -1) url="it/willkommen.asp";
else if (language.indexOf('en') > -1) url="en/willkommen.asp";
// -->
</script>

aus zahlreichen Seiten herausgenommen habe und durch das entsprechende ASP Pendant

<%
  'Sprachen
  languages = "de, it, en"
  'Startseiten
  indexpages = "willkommen.html, benvenuti.html, welcome.html" 
  'Internationale Startseite
  defaultindex = "welcome.html"
  '----------------------------------'
  languages = split(languages, ", ")
  indexpages = split(indexpages, ", ")
  
  browserlanguages = lcase(Request.ServerVariables("HTTP_ACCEPT_LANGUAGE"))
  for language = 0 to ubound(languages)-1
    if instr(browserlanguages, languages(language)) > 0 then
      Response.Status = "301 Moved Permanently"
      Response.AddHeader "Location", "http://" & Request.ServerVariables("HTTP_HOST") & "/" & indexpages(language)
      Response.End
    end if
  next 
  Response.Status = "301 Moved Permanently"
  Response.AddHeader "Location", "http://" & Request.ServerVariables("HTTP_HOST") & "/" & defaultindex
  Response.End
%>

ersetzt habe, frage ich mich, ob Suchmaschinen überhaupt je eine deutsche Startseite sehen.

Bei den Browsern ist der Fall klar:

Opera: HTTP_ACCEPT_LANGUAGE:de-DE,de;q=0.9,en;q=0.8
Firefox : HTTP_ACCEPT_LANGUAGE:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
IE6/7 : HTTP_ACCEPT_LANGUAGE:de

Aber wie verhält es sich bei Bots? Haben die eine HTTP_ACCEPT_LANGUAGE? Wenn ja, haben sie alle verschiedene? d.h. manchmal kommt ein englischer, mal ein deutscher - und nimmt dann die entsprechende Startseite in den Index auf?

Diese Sprachumschaltung ist von vielen Kunden gewünscht. Bringt sie für Sumas Nachteile?


Zusatzfrage:

Wäre es besser, auf der Root-Seite, also http://domain.it/, entsprechend der Sprache die jeweilige Start-Seite anzuzeigen, anstatt per 301 an die jeweilige Unterseite weiterzuleiten?

<%
  [...]
  for language = 0 to ubound(languages)-1
    if instr(browserlanguages, languages(language)) > 0 then
      Server.Execute indexpages(language)
      Response.End
    end if
  next 
  Server.Execute defaultindex
  Response.End
%>

Danke für Tips,
Rudy

22.01.2007 22:28 | geändert: 22.01.2007 22:44

2 Jörg

Ein Header HTTP_ACCEPT_LANGUAGE senden zumindest Googlebot und Yahoo Slurp nicht. Auf dieser Testseite würde diese Angabe z.B. hinter "Unterstützte Sprachen:" angezeigt, im Google Cache und im Yahoo Cache ist an dieser Stelle niochts zu sehen

Die Suchmaschinen-Bots sehen wohl nur die Default Language Version, es sei denn, die anderen Versionen sind auf eigenen Unterseiten untergebracht und zusätzlich von der Default Version (oder einer anderen indizierten Seite) verlinkt.

22.01.2007 22:55 | geändert: 22.01.2007 22:58

3 Rudy

Nette Testseite, das ist ja was ganz praktisches ;)

Die Suchmaschinen-Bots sehen wohl nur die Default Language Version
Ja, sieht so aus. Klar sind die Seiten der anderen Sprachen auch verlinkt - aber die Folge ist, dass als erstes Suchergebnis die englische Seite ganz oben ist? Das gefiele mir gar nicht. Setzt sich die Content-Language, die ich auch immer brav setze, gegenüber der 1. Seite auf die weitergeleitet wird durch, wenn jene als 'en' gekennzeichnet ist und die deutsche Suchmaschine verwendet wird? Ich meine, sieht der Suchende dann trotzdem die deutsche Seite vor der englischen, auch wenn die englische für den Bot im Root-Verzeichnis http://domain.it/ angezeigt wird?

Ansonsten erübrigt sich wohl die Zusatzfrage...

22.01.2007 23:05 | geändert: 22.01.2007 23:07

5 Rudy

Dann wäre die 301er Lösung die bessere? Verliere ich da nicht sofort einen PageRank-Punkt auf dem Index? Ich hab mal wo gelesen, dass der PR der Unterseiten immer der PR der Root - 1 ist. Sollte besser standardmäßig in der Root die Startseite mit der bevorzugten Sprache des Kunden liegen - mit Links auf die Startseiten der anderen Sprachversionen, oder gleich per 301 an die bevorzugte Seite weitergeleitet werden?

Also z.B.

Kein 301:

http://domain.it/ --> Deutsche Version
 ---> linkt auf 
     http://domain.it/benvenuti.html (Italienisch) 
     http://domain.it/welcome.html (englisch)

http://domain.it/benvenuti.html --> Italienische Version, 
 --- >linkt auf 
     http://domain.it/ (Deutsch) 
     http://domain.it/welcome.html (englisch)

http://domain.it/welcome.html --> Englische Version, 
 --- >linkt auf 
     http://domain.it/ (Deutsch) 
     http://domain.it/benvenuti.html (englisch)

Oder besser mit 301 von http://domain.it sofort auf die Deutsche Version
http://domain.it/willkommen.html (gesetzt den Fall, dass die HTTP_ACCEPT_LANGUAGE leer ist oder die Sprache gefunden wurde)


http://domain.it/ x--301--> http://domain.it/willkommen.html

http://domain.it/willkommen.html --> Deutsche Version
 ---> linkt auf 
     http://domain.it/benvenuti.html (Italienisch) 
     http://domain.it/welcome.html (englisch)

http://domain.it/benvenuti.html --> Italienische Version, 
 --- >linkt auf 
     http://domain.it/willkommen.html (Deutsch) 
     http://domain.it/welcome.html (englisch)

http://domain.it/welcome.html --> Englische Version, 
 --- >linkt auf 
     http://domain.it/willkommen.html (Deutsch) 
     http://domain.it/benvenuti.html (englisch)

Oder ist das gar nicht relevant, weil es sowieso ein 301-Redirect ist und die Unterseite damit den PR der Root erbt?

22.01.2007 23:27 | geändert: 22.01.2007 23:36

6 Jörg

Ich hab mal wo gelesen, dass der PR der Unterseiten immer der PR der Root - 1 ist.

Das ist eigentlich nur der Fall, wenn die externen Links alle auf den Root verweisen und die Unterseiten in einer Baumstruktur verlinkt werden, und dann ist -1 auch nur ein Näherungswert

Ich würde den Root entweder als eine gemeinsame Startseite oder als Startseite der Hauptsprache verwenden und zumindest von den Startseiten der Sprachversionen auf die jeweils anderen verlinken. Nur für den Fall, dass HTTP_ACCEPT_LANGUAGE nicht leer ist und der Client die "falsche" Version aufgerufen hat, würde ich serverseitig auf die richtige Version weiterleiten (oder ganz auf Weiterleitungen verzichten). Die Suchmaschinenbots können dann unbehelligt von Umleitungen die verschiedenen Versionen spidern

22.01.2007 23:48 | geändert: 22.01.2007 23:51

7 Rudy

Danke, ich werde den Rat beherzigen. Warst mir wieder eine große Hilfe!

23.01.2007 00:34

8 Jörg

Ist schon etwas länger her das Thema, aber mir fiel grad wieder mal auf, dass php.net die Sprachumschaltung auch nicht wirklich optimal gelöst hat. Unter de.php.net erhält der Suchmaschinenbot die Inhalte zwar auf deutsch - oft werden aber auch andere Subdomains verlinkt, die nach Auswertung des Headers ja auch deutschsprachig sind, so dass dann diese nicht-deutschsprachigen Subdomains vorne stehen. Allerdings werden die Snippets in den Suchergebnissen dann in der Default-Sprache Englisch angezeigt, da der Googlebot ja keinen Accept-Language-Header sendet. Jemand, der nach deutschsprachigen Inhalten sucht, wird das Suchergebnis dann möglicherweise nicht anklicken, da er ja nicht weiß, dass ihm der Inhalt in seiner Sprache angezeigt wird.

23.11.2008 20:49

Beitrag schreiben (als Gast)





[BBCode-Hilfe]