在多个域上运行多个商店时,配置Magento + Apache的正确方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在多个域上运行多个商店时,配置Magento + Apache的正确方法是什么?相关的知识,希望对你有一定的参考价值。

这个问题已经在互联网和SO上得到了充分的问题 - 有关每个人特定安装的具体细节都掩盖了可用的答案。希望这个问题能帮助包括我在内的每个人更好地理解这一点。

我的问题是“我们应该如何配置Apache .conf文件来处理多个域?”

(我知道答案“取决于”。希望80%的人一开始会有一个基本的设置,然后让它变得更复杂。)我希望这是一个很好的假设。

我正在将Magento的安装与Wordpress进行比较。在Wordpress下,安装它的“最佳方式”似乎是将整个核心放入名为/ wordpress的文件夹中。然后,使用Apache重写规则和永久链接,隐藏/ wordpress文件夹。在多域的情况下,Wordpress核心智能地为您处理整个过程,而无需对.htaccess文件进行太多修改。此外,无论需要做什么修改,Wordpress都可以为您完成 - 或者插件可以。天哪,我希望Magento像Wordpress一样容易安装。但事实并非如此。 (然而!)

在Magento下,当我们考虑URL时,术语“商店”是非常误导的。所以我们暂时忽略它,只关心最低级别 - “商店视图”。在我的情况下,我有以下内容:

Main Web Site -> Main Web Site Store -> Default Store View    
www.site1.com -> Main Store -> site1_english
www.site2.com -> Main Store -> site2_english
  • 第一列是域。
  • 第二列是商店 - 这个讨论的误导性标题。
  • 最后一列是“商店视图”。

至于物理放置文件的位置。包括我在内的大多数人都希望单独留下Magento核心。完全没有变化。所以我们把它放到htdocs root中,如下所示:

/var/www/html/magento

我认为这是每个人都感到困惑的地方。 Linux发行版与此位置的位置不一致。更糟糕的是,很多人都试图在一个经济的托管帐户上这样做。我自己在使用EC2。忽略所有...在文档根目录中粘贴/ magento。您可能添加的下一件事是/ wordpress文件夹。好极了。以后再做

在我的apache配置中,我设置如下:

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/html/magento

        <Directory /var/www/html/magento/>
                AllowOverride All
        </Directory>

# Other directives here
SetEnv MAGE_RUN_CODE "site1"
SetEnv MAGE_RUN_TYPE "website"

</VirtualHost>

<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/html/magento

        <Directory /var/www/html/magento/>
                AllowOverride All
        </Directory>

# Other directives here
SetEnv MAGE_RUN_CODE "base"
SetEnv MAGE_RUN_TYPE "site2_en"

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/html/nowhere
</VirtualHost>

/ nowhere文件夹有一个index.html,表示“no where”。

我所看到的情况是这样的:

  • 导航到www.site1.com - > Magento重定向到默认存储视图(在IP地址上)
  • 导航到www.site2.com - > Magento重定向到默认存储视图(在IP地址上)
  • 导航到我的服务器的IP地址 - > Magento显示默认存储视图

默认商店视图的BASE URL是http://my.ip.add.ress

这是我的问题:

  1. 我们应该把什么放在MAGE_RUN_CODE和MAGE_RUN_TYPE中?有些网站说“网站”,有人说“网店”。本应该去哪里?
  2. 为什么我没有到达我的无处网站?
  3. 为什么www.site1.com会继续重定向到默认商店视图?

有些文档谈到了创建专用文件夹或复制index.php或.htaccess。或者制作我们自己的.htaccess。在本文中,我选择了Apache配置文件。

为什么不能正常工作?

答案

为什么www.site1.com会继续重定向到默认商店视图?

System->Configuration->General->Web

你应该在那里找到Base secure和Base不安全的URL。此外,在左上角,您应该看到设置的范围。因此,对于每个商店视图,您应该更改(如果可能)商店视图的URL。

我们应该把什么放在MAGE_RUN_CODE和MAGE_RUN_TYPE中?有些网站说“网站”,有人说“网店”。本应该去哪里?

如果我没有在代码中出错,则指定要启动的“对象”的代码,并在类型中指定此对象的类型 - 商店或网站。但这不是100%的信息。

以上是关于在多个域上运行多个商店时,配置Magento + Apache的正确方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 多个 Authorize.net 网关

Magento 多个 Authorize.net 网关

Magento:从另一家商店获取产品价格?

Magento 在布局中设置多商店愿望清单错误

Magento - 我如何通过 GeoIP 按国家/地区运行商店?

如何在同一个域上运行多个 Laravel 实例?