多存储切换后正确的重定向

时间:2019-07-17 06:32:00

标签: apache magento

过去5年,我们在Magento开设了一家单店网站。现在,我们在同一个域下以英语打开一个新的商店视图。这意味着我们正在将商店代码添加到url: https://xxxxx.com/es/»西班牙语 https://xxxxx.com/en/»英语

出于SEO的原因,必须创建西班牙商店从/到/ es /的所有重定向。我尝试了不同的方法:

Apache :重定向每个URL

RewriteCond %{REQUEST_URI} !^/(es|en|admin|skin|js|media)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* /es%{REQUEST_URI} [R=301,NC,L]

index.php :重定向某些模式

$containsEs = false;
$containsEn = false;
$containsReserved = false;
if (strpos($_SERVER['REQUEST_URI'], '/es/') !== false) {
    $containsEs = true;
}
if (strpos($_SERVER['REQUEST_URI'], '/en/') !== false) {
    $containsEn = true;
}
// Other exceptions
if (strpos($_SERVER['REQUEST_URI'], '/admin/') !== false || strpos($_SERVER['REQUEST_URI'], '/admin/') !== false) {
    $containsReserved = true;
}

if (Mage::getStoreConfig('web/url/use_store') == '1' && isset($userStore['store']) && !$containsEs && !$containsEn && !$containsReserved) {
    header("HTTP/1.1 301 Moved Permanently");
    header('Location: '. substr($userStore['store']->getBaseUrl(), 0, -1) . $_SERVER['REQUEST_URI']);
    exit;
} elseif (!isset($userStore['store']) && !$containsEs && !$containsEn && !$containsReserved) {
    header("HTTP/1.1 301 Moved Permanently");
    $spanishStore = Mage::getModel('core/store')->load('1');
    header('Location: ' . substr($spanishStore->getBaseUrl(), 0, -1) . $_SERVER['REQUEST_URI']);
    exit;
}

我发现这两个选项都不是“完美”的。有时在使用apache重定向和使用index.php重定向时,使用modpagespeed会失败,这是一个糟糕的选择。

有人能提出一个更好,更好的选择吗?

谢谢

0 个答案:

没有答案