ブラウザーの言語を検出し、ユーザーを対応するストア ビューにリダイレクトするように、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);
すべてのストア ビューからの URL を処理し、404 エラーを発生させずに特定のページにリダイレクトできるようにするには、index.php ファイルで何を変更する必要がありますか?
ありがとう