在magento 2中创建多个网站/商店


16

您能在magento 2中提供创建多个网站的源/过程吗?对此我有一个google搜索,但是没有一个源/过程没有提供创建多个网站/商店的路径。


您也可以设置多站点切换到喜欢的语言切换器和存储交换机前端..请参阅此链接- stackoverflow.com/questions/39290073/...

请检查此链接...及其正常运行。单击此处为例
Virang Jethva '18

Answers:


24

在magento中创建了多网站,在管理面板中创建多商店的步骤与在magento1.x中相同。不要忘记为新网站/商店更改基本URL和安全URL。在管理面板中进行更改后,请执行以下步骤,

1)在magento根目录中创建一个新文件夹,然后将index.php.htaccess文件从magento根目录复制到新文件夹中。

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的包含路径,如下所示:

更换:

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)从根目录复制到新文件夹。
安德里亚

1
您可以使用将商店代码添加到url中来设置多商店而无需在index.php或htaccess中对值进行硬编码吗?似乎在magento2上不起作用
Claudiu Creanga

您是否尝试过针对生产环境使用建议的配置并将Webroot指向[Magento root] / pub进行此操作?
Facundo Capua

你们在将相同的自定义主题应用于两个网站时是否遇到任何问题?我的第二个网站正在从../ en_US / ...而不是../en_GB/ ..加载资产。您知道这是什么吗?
朱利诺·巴尔加斯

尝试使用语言代码在特定主题上部署
saravanavelu,

4

感谢这个资源

在Magento后端中,转到商店>所有商店,在此处使用不同的网站/商店/商店视图创建您的架构,请注意网站代码,例如,

  • 美国商店的代码为: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服务器等等。



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);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.