Hallo liebe Wordpress´ler,
ich habe folgendes Problem,
ich habe einen Script hinzugefügt der mir erlaubt eine Browser-Sprachenerkennung zu ermöglichen.
Alle die jetzt z.B. einen englischen Browser haben werden auf beispiel.com/en erfolgreich weitergeleitet.
Mein Problem ist aber das meine Deutsche Seite bei beispiel.com ist und es dann sobald ich einen deutschen Browser habe es in einer Endlosschleife endet, da ich kein beispiel.com/de habe. Gibt es eine möglichkeit wie ich meine Seite noch auf .com/de enden lassen kann und wenn ja hat es Auswirkungen auf SEO, denn dann würde es ja Theoretisch meine Hauptseite nicht mehr geben oder?
Oder doch lieber den script ändern (wo ich leider keine Ahung davon habe)?
<?php
/**
* The main template file.
*
* This is the most generic template file in a WordPress theme
* and one of the two required files for a theme (the other being style.css).
* It is used to display a page when nothing more specific matches a query.
* E.g., it puts together the home page when no home.php file exists.
* Learn more: http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage Redirect
*/
/**
* Browser-Sprache ermitteln.
*
* @param array $allowed_languages Ein Datenfeld der Sprachen, die auf der Seite zur Verfügung stehen.
* @param string $default_language Die zu verwendende Standardsprache, wenn keine ermittelt werden konnte.
* @param string $lang_variable Benutzerdefinierte Sprachenunterstützung. Wenn nicht übergeben wird specified $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwendet.
* @param string $strict_mode Wenn true (Standard) wird der gesamte Sprachencode ("en-us") verwendet und nicht nur der linke Teil ("en").
* @return string Die ermittelte Browser-Sprache.
*/
function get_lang_from_browser($allowed_languages, $default_language, $lang_variable = NULL, $strict_mode = TRUE) {
// $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde
if (NULL === $lang_variable)
$lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
// Wurde irgendwelche Information mitgeschickt?
if (empty($lang_variable))
return $default_language;
// Den Header auftrennen
$accepted_languages = preg_split('/,\s*/', $lang_variable);
// Die Standardwerte einstellen
$current_lang = $default_language;
$current_q = 0;
// Nun alle mitgegebenen Sprachen abarbeiten
foreach ($accepted_languages as $accepted_language) {
// Alle Infos dieser Sprache rausholen
$res = preg_match(
'/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.
'(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
$accepted_language,
$matches
);
if (!$res)
continue;
// Sprachcode holen und dann sofort in die Einzelteile trennen
$lang_code = explode('-', $matches[1]);
// Wurde eine Qualität mitgegeben?
if (isset($matches[2]))
$lang_quality = (float)$matches[2];
else
$lang_quality = 1.0;
// Bis der Sprachcode leer ist...
while (count($lang_code)) {
// Prüfen, ob der Sprachcode angeboten wird
if (in_array(strtolower(join('-', $lang_code)), $allowed_languages)) {
// Qualität prüfen
if ($lang_quality > $current_q) {
$current_lang = strtolower(join('-', $lang_code));
$current_q = $lang_quality;
break;
}
}
// Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren
if ($strict_mode)
break;
// Den rechtesten Teil des Sprachcodes abschneiden
array_pop($lang_code);
}
}
return $current_lang;
}
$allowed_langs = array('en', 'de');
$lang = get_lang_from_browser($allowed_langs, 'en', NULL, FALSE);
header('Location: http://' . $_SERVER['HTTP_HOST'] . "/$lang/");
exit();
?>
Alles anzeigen
Besten Dank das du es dir durchgelesen hast.:-o