我正在尝试使用共享购物车设置一个多商店。但是,用户登录有时不起作用。
该Store Switcher工作正常,但前端User Login的第二和第三个Store要求我按一下Sign In按钮两次登录。
我通过以下设置设置了多个商店:
多域(虚拟主机)
我正在使用一个Website。该站点将有三个Stores。域名将共享一个公共基本域。其他商店将使用子域。
我创建了magento2.com作为默认基本域。
我创建了store2.magento2.com作为第二家商店。
我创建了store3.magento2.com作为第三家商店。
根类别和测试产品
我创建了Store2 Root Category和Store3 Root Category。我还在每个根目录类别下创建了子类别。
我在每个子类别中添加了一个测试产品。
商店和景观
我没有在“ 主要网站商店”和“ 默认商店视图”上进行任何更改。
我为第二家商店创建了Store2和Store View 2。
我为第三家商店创建了Store3和Store View 3。
对于Store2,我将Store2设置为,Name并将Store2根目录类别选择为Root Category。
对于Store View 2,我选择Store2为Store,使用Store View 2为Name,并输入store2为Store Code。
对于3rd Store,我将Store3设置为,Name并将Store3根目录类别选择为Root Category。
对于Store View 3,我选择Store3为Store,使用Store View 3为Name,并输入store3作为Store Code。
URL和Cookie设置
在Configuration现在屏幕显示下5个选项Store View下拉菜单:
Default ConfigMain WebsiteDefault Store View- 店铺检视2
- 店铺景观3
我更改了Default Store View“ 商店视图2 ”和“ 商店视图3”的 URL和Cookie设置 。
我没有改变URL或Cookie设置为Default Config和Main Website。
因为Default Store View,我改变了Cookie Path。
对于商店查看2,我改变了Base URL和Cookie Path。
对于商店查看3,我改变了Base URL和Cookie Path。
账户共享
要在多个商店之间共享用户帐户和购物车,我Share Customer Accounts从下的“每个网站” 更改为“ 全局 ” Default Config。
.htaccess更改
我.htaccess在项目根目录的文件顶部添加了这些行。
#Multi store setting
SetEnvIf Host magento2.com MAGE_RUN_CODE=default
SetEnvIf Host magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^magento2.com MAGE_RUN_CODE=default
SetEnvIf Host ^magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host ^store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host store3.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host ^store3.magento2.com MAGE_RUN_TYPE=store
index.php更改
使用Store Switcher有时需要单击两次以从store2 / 3切换到默认值。要解决此问题,我必须$_COOKIE['store']在index.php处重置其值:
<?php
/**
* Application entry point
*
* Example - run a particular store or website:
* --------------------------------------------
* require __DIR__ . '/app/bootstrap.php';
* $params = $_SERVER;
* $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
* $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
* $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
* \/** @var \Magento\Framework\App\Http $app *\/
* $app = $bootstrap->createApplication('Magento\Framework\App\Http');
* $bootstrap->run($app);
* --------------------------------------------
*
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
try {
require __DIR__ . '/app/bootstrap.php';
} catch (\Exception $e) {
echo <<<HTML
<div style="font:12px/1.35em arial, helvetica, sans-serif;">
<div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;">
<h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;">
Autoload error</h3>
</div>
<p>{$e->getMessage()}</p>
</div>
HTML;
exit(1);
}
// Fix store switcher bug on switching to the default store
if ( isset($_SERVER['MAGE_RUN_TYPE']) == 'store' && isset($_SERVER['MAGE_RUN_CODE']) ) {
if ( !empty($_SERVER['MAGE_RUN_CODE']) ) {
$_COOKIE['store'] = $_SERVER['MAGE_RUN_CODE'];
}
}
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);
用户登录有时需要单击两次
通过上述设置,Store Switcher可以正常工作。购物Cart在所有3个商店中共享给已登录和未登录用户。
但是,在Store2和Store3上,前端user login有时会重定向回同一登录页面。如果按Sign In重定向登录页面上的按钮(第二次单击此按钮),就让我登录。
有没有办法解决这个问题?
更新:禁用 Cache
我从命令行禁用了缓存:
php bin/magento cache:disable
随着禁用缓存,user login在商店2和Store3变得更加稳定。在10次尝试中,它仍然重定向回登录页面1,但是此更改使登录工作更好。
但是,整个站点变慢了!!!
有没有一种方法可以正确配置缓存以使其在user login多重Store设置中正确执行?


















