elvis: htaccess accept-language und Suchmaschinen

Hallo,

Die automatische Sprachumleitung wurde ja schon öfters hier diskutiert, aber ich finde keine Aussagen zum Verhalten der Suchmaschinen, wenn Sie auf solch eine Umleitung treffen.

Unsere Site ist zweisprachig (english/deutsch). Bisher gab es eine index.htm auf der die Besucher die Sprache wählen konnten. Die soll jetzt verschwinden. Am komfortablesten erscheint mir eine Sprachumleitung per htaccess, der folgenden Art:

RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]
RewriteCond %{HTTP:Accept-Language} !^.*en.*de.*$ [NC]
RewriteRule ^index.html?$ /deutsch/ersteseite.htm [L,R=301]
RewriteRule ^index.html?$ /english/firstpage.htm [L,R=301]

Das funktioniert prächtig, aber hat das irgendwelche negativen Auswirkungen auf Suchmaschinen? Was sollte man beachten? Ist diese 301 Umleitung die richtige?

  1. Die automatische Sprachumleitung wurde ja schon öfters hier diskutiert, aber ich finde keine Aussagen zum Verhalten der Suchmaschinen, wenn Sie auf solch eine Umleitung treffen.

    Wie bei jeder Umleitung. Sie navigieren das angegebene Ziel und werden bei redirect permanent auch später die die angegebene Ressource direkt aufrufen.

    Unsere Site ist zweisprachig (english/deutsch). Bisher gab es eine index.htm auf der die Besucher die Sprache wählen konnten. Die soll jetzt verschwinden. Am komfortablesten erscheint mir eine Sprachumleitung per htaccess, der folgenden Art:

    RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]
    RewriteCond %{HTTP:Accept-Language} !^.*en.*de.*$ [NC]
    RewriteRule ^index.html?$ /deutsch/ersteseite.htm [L,R=301]
    RewriteRule ^index.html?$ /english/firstpage.htm [L,R=301]

    Das funktioniert prächtig, aber hat das irgendwelche negativen Auswirkungen auf Suchmaschinen? Was sollte man beachten? Ist diese 301 Umleitung die richtige?

    Ein Header enthält mehr Informationen.
    Accept-Language: en,fr;q=0.8,it;q=0.5,de;q=0.3
    Ist da Deutsch die richtige Version?

    Weil mod_rewrite schlecht geeignet ist, mit dem Accept-Language content umzugehen, würde ich hier index.html intern auf ein script umleiten, und dieses Script den Location header ausgeben lassen.

    Andernfalls solltest du
    http://httpd.apache.org/docs/2.0/en/content-negotiation.html
    verarbeiten und mit einer type-map arbeiten.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hallo,
      Danke für die schnelle Antwort.

      Ein Header enthält mehr Informationen.
      Accept-Language: en,fr;q=0.8,it;q=0.5,de;q=0.3
      Ist da Deutsch die richtige Version?

      Das htaccess skript leitet nur auf Deutsch, wenn Deutsch die bevorzugte Sprache ist und nicht etwa erst hinter English kommt (Zeile 2 des Skripts). Alle anderen Anfragen sollen auf die englische Seite kommen. Das klappt in Tests 100% wie gewünscht. Natürlich können die User auf der Site auch noch einfach die Sprache umschalten.

      Weil mod_rewrite schlecht geeignet ist, mit dem Accept-Language content umzugehen, würde ich hier index.html intern auf ein script umleiten, und dieses Script den Location header ausgeben lassen.

      Andernfalls solltest du
      http://httpd.apache.org/docs/2.0/en/content-negotiation.html
      verarbeiten und mit einer type-map arbeiten.

      Habe das schon bearbeitet, aber diese reine htaccess Lösung finde ich am elegantesten. Ich hatte mir nur Gedanken gemacht, weil die index.htm durch das Skript ja umgangen und somit vollkommen obsolet wird.

      Frank

  2. RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]
    RewriteCond %{HTTP:Accept-Language} !^.*en.*de.*$ [NC]
    RewriteRule ^index.html?$ /deutsch/ersteseite.htm [L,R=301]
    RewriteRule ^index.html?$ /english/firstpage.htm [L,R=301]

    Der Vollständigkeit halber....

    Konsequenter für die RewriteRule ist:

    RewriteRule ^(index.html?)?$ /deutsch/ersteseite.htm [L,R=301]

    Das leitet um:
    www.meinedomain.de
    www.meinedomain.de/index.htm
    www.meinedomain.de/index.html

    ^index.html?$ geht auch, weil der Server meist sowieso 'ne index liefert, aber besser nix dem Zufall überlassen...