joomla 1.7.3 multilanguage 303 redirect problem
Zum Einsatz, für die Übersetzung kam dabei Falang, da mir dass Joomla eigene Übersetzungssystem zu umständlich erscheint und sowieso Joomfish Kenntnisse vorhanden waren.
Problem war allerdings, dass es auf der Startseite www.mixwerk.com zu einem 303 redirect kam.
Type of redirect: 303 See other
Redirected to: http://www.mixwerk.com/de/
Da dies bspw. dazu führt, dass der dynamische Sitemap Link von xmap nicht gefunden werden kann und vermutlich auch sonst eher negative auswirkungen aufs Google Ranking zu befürchten sind, poste ich hier mal den corehack der das Problem löst.
plugins/system/languagefilter/languagefilter.php
// Redirect only if not in post
$post = JRequest::get('POST');
if (JRequest::getMethod() != "POST" || count($post) == 0)
{
if ($this->params->get('remove_default_prefix', 0) == 0)
{
// redirect if sef does not exists
if (!isset(self::$sefs[$sef]))
{
// Use the current language sef or the default one
$sef = isset(self::$lang_codes[$lang_code]) ? self::$lang_codes[$lang_code]->sef : self::$default_sef;
$uri->setPath($sef . '/' . $path);
if ($app->getCfg('sef_rewrite')) {
// $app->redirect($uri->base().$uri->toString(array('path', 'query', 'fragment')));
}
else {
$path = $uri->toString(array('path', 'query', 'fragment'));
// $app->redirect($uri->base().'index.php'.($path ? ('/' . $path) : ''));
}
}
}
else
{
// redirect if sef does not exists and language is not the default one
if (!isset(self::$sefs[$sef]) && $lang_code != self::$default_lang)
{
$sef = isset(self::$lang_codes[$lang_code]) ? self::$lang_codes[$lang_code]->sef : self::$default_sef;
$uri->setPath($sef . '/' . $path);
if ($app->getCfg('sef_rewrite')) {
// $app->redirect($uri->base().$uri->toString(array('path', 'query', 'fragment')));
}
else {
$path = $uri->toString(array('path', 'query', 'fragment'));
// $app->redirect($uri->base().'index.php'.($path ? ('/' . $path) : ''));
}
}
// redirect if sef is the default one
elseif ($sef == self::$default_sef)
{
array_shift($parts);
$uri->setPath(implode('/' , $parts));
if ($app->getCfg('sef_rewrite')) {
$app->redirect($uri->base().$uri->toString(array('path', 'query', 'fragment')));
}
else {
$path = $uri->toString(array('path', 'query', 'fragment'));
// $app->redirect($uri->base().'index.php'.($path ? ('/' . $path) : ''));
}
}
}
}Ohne Gewähr, vorher Update der Datei erstellen.
Details http://www.webdesign-ecommerce.de/2012/01/joomla-173-multilanguage-303-redirect.html





