Magento:语言检测和网址404错误

时间:2012-07-01 07:27:55

标签: magento

我已经配置了我的magento index.php,因此它会检测浏览器语言并将用户重定向到相应的商店视图。这很好。但是这个问题与每个商店视图特定的URL有关。例如,a有一个带url的产品:

./product-url-in-english --> English view
./product-url-in-catalan --> Catalan view

如果我的浏览器配置为英文并且我转到加泰罗尼亚网址,那么我收到404错误,因为该网址仅用于加泰罗尼亚视图,但考虑到我检测到浏览器语言并重定向到在英国人的观点中,加泰罗尼亚语URL不起作用。

如果我使用from_store和store的参数,它会起作用,但我不知道如何在index.php文件中反映出来。检测浏览器语言的代码如下:

/* Language detection */
function getLanguageCode()
{
    $default_language_code = 'es';
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        foreach (explode(",", strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $accept) {
            if (preg_match("!([a-z-]+)(;q=([0-9.]+))?!", trim($accept), $found)) {
                $langs[] = $found[1];
                $quality[] = (isset($found[3]) ? (float) $found[3] : 1.0);
            }
        }
        // Order the codes by quality
        array_multisort($quality, SORT_NUMERIC, SORT_DESC, $langs);
        // get list of stores and use the store code for the key
        $stores = Mage::app()->getStores(false, true);
        // iterate through languages found in the accept-language header
        foreach ($langs as $lang) {
            $lang = substr($lang,0,2);
            if (isset($stores[$lang]) && $stores[$lang]->getIsActive()) 
                return $lang;
        }
    }
    return $default_language_code;
}


/* Store or website code */
if(isset($_SERVER['MAGE_RUN_CODE']))
    $mageRunCode = $_SERVER['MAGE_RUN_CODE'];
else
    $mageRunCode = getLanguageCode();

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

我需要在index.php文件中更改什么才能处理所有商店视图中的网址并重定向到特定网页而不会出现404错误?

由于

0 个答案:

没有答案