Seite 1 von 1

Umleitung je nach Sprache auf entsprechende Indexseite

Verfasst: 21.09.2009, 06:13
von oidahabara
Umleitung je nach Sprache auf entsprechende Indexseite:

Ich habe bei einer Website eine englische Abteilung zugefügt und möchte jetzt, dass bei Aufruf der URL www.xyz.com automatisch auf die index.html (englische Version) geleitet wird. Server ist eingestellt, dass .html vor .htm kommt.

Wenn aber einer kommt und im Browser "de" vermerkt hat soll er direkt auf die Seite index.htm (deutsche Version) leiten.

Den folgenden Code hab ich auf einer anderen Site im .htaccess und funktioniert supa

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.xyz\.com [NC]
RewriteRule ^(.*)$ http://xyz.com/$1 [L,R=301]

RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteRule .* http://abc.com/ [R,L]
Das geht aber auf eine andere Domain. Jetzt möchte ich aber nur auf eine andere Indexseite umleiten und hab da den Code so probiert:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.xyz\.com [NC]
RewriteRule ^(.*)$ http://xyz.com/$1 [L,R=301]

RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteRule .* http://xyz.com/index.htm [R,L]
Geht aber ned :cry:

Die richtige URL (index.htm) wird in der Adresszeile des Browsers angezeigt, aber nicht die Seite selbst. Statt dessen kommt eine Fehlermeldung
Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

* Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.
Danke im voraus fur fachkundige Hilfe.

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Re: Umleitung je nach Sprache auf entsprechende Indexseite

Verfasst: 21.09.2009, 09:21
von Mork vom Ork
mod_rewrite ist da völlig fehl am Platze, erstens ist die automatische Sprachwahl im Server bereits eingebaut, zweitens ist die Komplexität der Sprachpräferenzen mit mod_rewrite nicht zu erfassen:
Den folgenden Code hab ich auf einer anderen Site im .htaccess und funktioniert supa

RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteRule .* https://abc.com/ [R,L]
Gut, jetzt kommt ein Engländer, der auch ein wenig Deutsch spricht. Was passiert? Du schiebst ihn von seiner Muttersprache auf die deutsche Seite, obwohl er mit der englischen zweifelsohne besser bedient wäre - und dies in seinen Spracheinstellungen auch ausdrücklich so angegeben hat, in Accept-Language kommt nämlich eine sortierte Liste. Dumm gelaufen.

Automatische Sprachwahl wird beim Apache folgendermaßen eingerichtet:

Benenne die deutsche Seite in index.html.de und die englische in index.html.en um und setze in jeder Seite einen Querverweis zur jeweils anderen Sprache (mit vollständiger URL, also /index.html.en, nicht lediglich /, damit der Besucher eine Sprache wählen kann). Anschließend fügst du der obersten .htaccess die Zeile Options +multiviews hinzu. Fertig.

Eventuell möchtest du noch LanguagePriority und ForceLanguagePriority prefer fallback einsetzen, um sicherzustellen, dass immer eine Standardsprache ausgegeben wird, selbst, wenn der Besucher keine der angebotenen Sprachen zu verstehen vorgibt. Bei eher international ausgerichteten Angeboten wäre sinnigerweise Englisch als Standard vorzuziehen.

Verweise nicht auf die vollständigen Dateinamen, wenn du nicht ausdrücklich die Automatik aushebeln willst! Die Automatik funktioniert nur, wenn keine exakt passende Datei gefunden wird, d.h. index.html.de liefert index.html.de, index.html (oder auch nur index) wählt hingegen unter index.html.de und index.html.en. Für den Aufruf über / ist die Zuordnung via DirectoryIndex vorgeschaltet, dort ist in der Regel index.html aufgeführt, so dass im Anschluss die Automatik wirkt.

Verfasst: 21.09.2009, 10:09
von oidahabara
Besten Dank, funktioniert supa.

Immer wieder erstaunlich was ein paar Buchstaben ausmachen, wenn man weiß welche, wohin :D