공유 카트로 멀티 스토어를 설정하려고합니다. 그러나 때때로 사용자 로그인이 작동하지 않습니다.
는 Store Switcher
잘 작동하지만, 프론트 엔드 User Login
2, 3 일에는 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 을 작성 했습니다 .
들어 상점 2 , 내가 설정 상점 2를 로 Name
선택한 상점 2 루트 카테고리 로 Root Category
.
들어 스토어 뷰 2 , 내가 선택한 상점 2를 같이 Store
사용 스토어보기 2 로 Name
하고, 입력 된 상점 2를 로 Store Code
.
3의 Store
경우 Store3을 로 설정 Name
하고 Store3 루트 범주를 로 선택 했습니다 Root Category
.
들어 스토어보기 3 , 나는 선택 Store3을 같이 Store
사용 스토어보기 3 로 Name
하고, 입력 store3을 로 Store Code
.
URL 및 쿠키 설정
Configuration
화면의 Store View
드롭 다운 아래 5 가지 선택 사항 이 표시 됩니다.
Default Config
Main Website
Default Store View
- 상점보기 2
- 상점보기 3
Default Store View
, Store View 2 및 Store View 3에 대한 URL 및 쿠키 설정을 변경했습니다 .
Default Config
및에 대한 URL 또는 쿠키 설정을 변경하지 않았습니다 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
on Store2 및 Store3 이 훨씬 안정적이되었습니다. 여전히 10 번의 시도 중 로그인 페이지 1로 다시 리디렉션되었지만이 변경으로 인해 로그인이 더 잘 작동했습니다.
그러나 전체 사이트가 느려졌습니다 !!!
user login
다중 Store
설정 에서 올바르게 작동하도록 캐시를 올바르게 구성하는 방법이 있습니까?