我已经配置了我的 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 错误?
谢谢