Php 迁移后的多网站、多域设置Magento 2
我已将Magento 1商店迁移到Magento 2。除多网站设置外,所有功能均按预期工作。我最初的M1安装包括1个网站和2个商店(不同的域:.nl和.be),它们都有2个Php 迁移后的多网站、多域设置Magento 2,php,.htaccess,magento,migration,magento2,Php,.htaccess,Magento,Migration,Magento2,我已将Magento 1商店迁移到Magento 2。除多网站设置外,所有功能均按预期工作。我最初的M1安装包括1个网站和2个商店(不同的域:.nl和.be),它们都有2个商店视图(不同的语言nl和EN,nl和FR)。 我所能找到的所有文档都显示了如何在Magento2中设置网站和存储,以及如何在index.php中更改以在前端获得想要的结果。我的问题是,所有这些文档都提供了显示多个网站的解决方案,但我的设置由一个网站和一个网站代码(“基本”)组成。它也没有解释如何设置第二个域,我应该在索引文件
商店视图
(不同的语言nl和EN,nl和FR)。
我所能找到的所有文档都显示了如何在Magento2中设置网站和存储,以及如何在index.php
中更改以在前端获得想要的结果。我的问题是,所有这些文档都提供了显示多个网站的解决方案,但我的设置由一个网站和一个网站代码(“基本”)组成。它也没有解释如何设置第二个域,我应该在索引文件中放什么?我想我需要使用存储代码,但是我无法让第二个域工作。主域正在工作(因为它是“基”)
以下是我迄今为止所尝试的:
- 我已经设置了第二个域,并为app、var、pub和lib的主文件夹创建了
symlinks
- 以各种方式在我的网站根目录中编辑
。下面是我尝试过的许多例子中的一个,我展示这一个是因为在我的头脑中应该是这样的index.php
$params = $_SERVER; switch($_SERVER['HTTP_HOST']) { case 'spijl-in-stijl.be': case 'www.spijl-in-stijl.be': $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'spijl-in-stijlbe'; $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'store'; break; default: $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'base'; $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; }
- 在我的第二个域文件夹中创建并编辑了
。它要么显示403禁止,要么将我重定向到主域index.php
- 尝试使用存储代码代替网站代码,但出现错误(找不到请求的存储)
- 试图通过更改第二个存储设置在后端编辑
,它破坏了整个网站,只能通过编辑数据库中的基本URL来恢复它storeview
- 在root中编辑了
,在第二个域中添加了一个编辑的.htaccess
.htaccess
我真的希望有人能帮我解决这个问题。要在多商店模式下运行Magento,您实际上不需要创建多个目录。唯一的例外是,如果您的托管提供商需要为您托管的每个域提供单独的目录,但对于大多数提供商来说,情况并非如此 确保在服务器和magento中完成以下配置以运行多存储 配置基本url: 转到
Magento admin>>存储>>配置
,然后将配置范围切换到相应的存储/网站。然后用相应存储的新url替换现有配置的url。此url将非常有用:
Configure.htaccess:
使用正确的存储代码和域名替换值后,将以下代码添加到webroot中的.htaccess文件中
SetEnvIf Host yourwebsite.com MAGE_RUN_CODE={{YOUR STORE CODE HERE}}
SetEnvIf Host yourwebsite.co.uk MAGE_RUN_TYPE=store
完成上述配置后,可以删除对index.php所做的更改
对.htaccess进行更改也不是很好的做法。您也可以通过在vhost文件中配置它来实现这一点
对于Apache:
<VirtualHost *:80>
ServerName yourwebsite.com
DocumentRoot {{Your webroot}}
<Directory {{Your webroot}}/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
SetEnv MAGE_RUN_CODE "store1_code"
SetEnv MAGE_RUN_TYPE "store"
</VirtualHost>
<VirtualHost *:80>
ServerName yourwebsite.co.uk
DocumentRoot {{Your webroot}}
<Directory {{Your webroot}}/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
SetEnv MAGE_RUN_CODE "store2_code"
SetEnv MAGE_RUN_TYPE "store"
</VirtualHost>
注意:上面的示例代码不仅仅适用于复制和粘贴,相反,您需要用网站特定的值替换这些值,并从这里复制必要的配置,并将其放置在网站/web服务器配置的适当部分
server {
listen 80;
server_name yourwebsite.com
set $MAGE_ROOT {{Your webroom}};
set $MAGE_RUN_CODE = store1_code;
set $MAGE_RUN_TYPE = store;
}
server {
listen 80;
server_name yourwebsite.co.uk
set $MAGE_ROOT {{Your webroom}};
set $MAGE_RUN_CODE = store2_code;
set $MAGE_RUN_TYPE = store;
}