1

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

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

如果我的浏览器是用英语配置的并且我转到加泰罗尼亚语 url,那么我会收到 404 错误,因为该 url 仅适用于加泰罗尼亚语视图,但鉴于我正在检测浏览器语言并重定向到英语视图,加泰罗尼亚语 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 文件中进行哪些更改,以便我可以处理来自所有商店视图的 url 并重定向到特定页面而不会出现 404 错误?

谢谢

4

0 回答 0