magento 2에서 멀티 웹 사이트 / 상점 만들기


16

magento 2에서 다중 웹 사이트를 만들기 위해 소스 / 프로 시저를 제공 할 수 있습니까? 나는 이것에 관해 구글이 있지만 소스 / 프로 시저 중 어느 것도 다중 웹 사이트 / 스토어를 생성하는 경로를 제공하지 않았습니다.


또한 언어 스위처 및 저장 스위처와 같은 프론트 엔드에 멀티 사이트 스위처를 설정할 수 있습니다 ..이 링크를 참조 - stackoverflow.com/questions/39290073/...

이 링크를 확인하고 작동하는지 확인하십시오. 예를 들어 여기를 클릭하십시오
Virang Jethva

답변:


24

magento에서 다중 웹 사이트를 생성했습니다. 관리자 패널에서 다중 저장소를 생성하는 단계는 magento1.x와 동일합니다. 새 웹 사이트 / 상점의 기본 URL 및 보안 URL을 변경하는 것을 잊지 마십시오. 관리자 패널에서 변경 한 후에는 다음 단계를 따르십시오.

1) magento 루트에 새 폴더를 생성하고 magento 루트에서 새 폴더로 index.php.htaccess파일을 복사하십시오 .

2) index.php새 폴더에 있는 것을 편집하십시오

바꾸다:

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);

/** @var \Magento\Framework\App\Http $app */

$app = $bootstrap->createApplication('Magento\Framework\App\Http');

$bootstrap->run($app);

와:

 $params = $_SERVER;

 $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'newstore'; //Webite code as same in admin panel

 $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);

또한 bootstrap.php include 경로를 아래와 같이 업데이트하십시오.

바꾸다:

require __DIR__ . '/app/bootstrap.php';

와:

require __DIR__ . '/../app/bootstrap.php';

3) 새 폴더 안에 simlinks를 만듭니다

 ln -s /home/example/example.com/html/app/ app 

 ln -s /home/example/example.com/html/lib/ lib 

 ln -s /home/example/example.com/html/pub/ pub 

 ln -s /home/example/example.com/html/var/ var 

이것을 참조하십시오

var/generation,var/cache and pub/static파일을 지우고 정적 컨텐츠 배치를 수행하십시오.


루트에서 새 폴더로 .htaccess(함께 index.php) 복사해야한다고 생각 합니다.
Andrea

1
URL에 상점 코드 추가를 사용하여 index.php 또는 htaccess에서 값을 하드 코딩하지 않고 멀티 스토어를 설정할 수 있습니까? magento2에서 작동하지 않는 것 같습니다
Claudiu Creanga

프로덕션 환경을위한 제안 된 구성으로이 작업을 시도하고 웹 루트를 [Magento root] / pub로 지정 했습니까?
파쿤도 카푸 아

두 웹 사이트 모두에 동일한 사용자 정의 테마를 적용하는 데 문제가 있습니까? 두 번째 웹 사이트가 ../en_GB/. 대신 ../ en_US / ...에서 자산을로드하고 있습니다. 어떤 아이디어가 될 수 있습니까?
Juliano Vargas

언어 코드를 사용하여 특정 테마에 배포 해보십시오
saravanavelu

4

이 자료 덕분에

Magento 백엔드에서 상점> 모든 상점으로 이동하십시오. 다른 웹 사이트 / 상점 / 상점보기로 아키텍처를 작성하십시오.

  • USA 상점에는 코드가 있습니다 : us, www.store.com에서 액세스
  • 프랑스 매장 코드 : fr, www.store.fr에 의해 액세스됩니다
  • 스페인어 상점에는 코드 : es가 있으며 www.store.es에서 액세스합니다

Nginx 설정 파일 (대부분 / etc / nginx / sites-enabled 폴더에 있음)에서 설정 파일 상단에 추가하십시오 :

map $HTTP_HOST $mage_run_code {
www.store.com us;
www.store.fr fr;
www.store.es es;
}

그런 다음 server블록에서 선언을 추가하여 3 개의 도메인을 청취하십시오.

server {
 listen 80;
 server_name www.store.com www.store.fr www.store.es;

// whatever other config you get...
}

마지막으로, PHP 설정 (로 시작하는 블록 location ~ \. php $ {)에서

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

줄 앞에 (일반적으로로 시작하는 다른 줄이 나타납니다 fastcgi_param)

 include        fastcgi_params;

설정 파일을 저장하고 Nginx server et voila를 다시 시작하십시오.



0

magento 2.2.5에서 간단한 방법으로 테스트

서버 예 domain2.com에서 도메인 별명 작성

magento 루트에서 index.php 파일 편집

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);
}

$params = $_SERVER;
$customstore = array(
    'www.main.com'=>'main_website', // Website, Store or Storeview Code
    'www.domian2.com'=>'domain2_website'     // Website, Store or Storeview Code
    );
if(isset($customstore[$_SERVER['HTTP_HOST']]))
    $websitecode = $customstore[$_SERVER['HTTP_HOST']];
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = isset($websitecode) ? $websitecode : '';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';//use website or store or view 
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.