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


What is the proper way to configure Magento + Apache while running multiple stores on multiple domains?

这个问题在互联网和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
  • 第一列是域
  • 第二列是商店--这个讨论的误导性标题
  • 最后一列是"商店视图"

至于实际放置文件的位置。大多数人,包括我在内,都想让马根托核心一个人呆着。没有任何变化。因此,我们将其放入htdocs根目录中,如下所示:

/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>

/nore文件夹有一个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

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

我们应该在MAGE_RUN_CODE和MAGE_RUN_TYPE中放入什么?有些网站说"网站",有些说"商店"。里面应该放什么?

如果我在代码中没有错的话,你可以指定你想要启动的"对象"的代码,在类型中你可以指定这个对象的类型——商店或网站但这不是100%的信息