【问题标题】:Magento multi website controllerMagento 多网站控制器
【发布时间】:2011-06-07 02:53:43
【问题描述】:

是否可以在 Magento 中以编程方式调度网站?目前,我的站点根目录中有一个名为 /websites 的目录。在这个目录中,我有每个网站的子目录,例如,site_a、site_b、site_c。然后每个站点子目录都有一个 .htaccess 和 index.php 以及相应的运行代码,例如:

$mageFilename = '../../app/Mage.php';
require_once $mageFilename;    
Mage::run("site_b", "website");

在 /websites/site_b 的 index.php 中。虽然这可行,但我确实希望避免在文件系统中进行文件管理。任何人都可以就最好的方法提出任何建议吗?也许 /websites 中的一个脚本代替了各个站点的子目录。任何帮助表示赞赏。

【问题讨论】:

    标签: magento web store controllers


    【解决方案1】:

    您可以访问 php 中的 $_SERVER 变量,并且可以使用这些变量来确定 Mage::run("whatever", "website");调用,例如:

    $whatever=$_SERVER['condition/url/whatever'];
    
    // or use some cookies 
    
    if (isset($_COOKIE['dev'])) $whatever=$_COOKIE['dev'];
    
    
    switch($whatever)
    { case "example.com":
      case "www.example.com":
        $_SERVER['MAGE_RUN_CODE'] = "example";
        $_SERVER['MAGE_RUN_TYPE'] = "website";
        break;
      case "dev":
      case "test.com":
        $_SERVER['MAGE_RUN_CODE'] = "test";
        $_SERVER['MAGE_RUN_TYPE'] = "website";
      default:
        $_SERVER['MAGE_RUN_CODE'] = "live";
        $_SERVER['MAGE_RUN_TYPE'] = "website";
    }
    Mage::run($_SERVER['MAGE_RUN_CODE'], $_SERVER['MAGE_RUN_TYPE']);
    

    通过这种方式,您只需要一个代码库以及 Magento 后端中正确配置的设置即可路由到您的不同商店。

    【讨论】:

    • 我在虚拟主机定义中使用了 SetEnv MAGE_RUN_CODE "site_d"。然而,在这种情况下,我正在寻找通过 url 调度许多网站的最佳方式。
    • 在这种情况下,OSDave 的答案可能适合你,但是,我已经离开了 ln -s ../app/ ./app。 (以及所有其他目录)并在 index.php 中引入我自己的逻辑
    【解决方案2】:

    您可以在 .htaccess 文件中处理所有内容 我的看起来像这样:

    #SetEnvIf Host www\.lenjerii\.com MAGE_RUN_CODE=base
    #SetEnvIf Host www\.lenjerii\.com MAGE_RUN_TYPE=website
    #SetEnvIf Host ^lenjerii\.com MAGE_RUN_CODE=base
    #SetEnvIf Host ^lenjerii\.com MAGE_RUN_TYPE=website
    
    #SetEnvIf Host www\.wildfashion\.ro MAGE_RUN_CODE=wildfashion
    #SetEnvIf Host www\.wildfashion\.ro MAGE_RUN_TYPE=website
    #SetEnvIf Host ^wildfashion\.ro MAGE_RUN_CODE=wildfashion
    #SetEnvIf Host ^wildfashion\.ro MAGE_RUN_TYPE=website
    

    此解决方案为您的其他网站消除任何其他文件夹。

    【讨论】:

      【解决方案3】:

      如果我理解正确,您需要的是一些符号链接:在每个子目录中,对原始安装进行符号链接。即:ln -s ../app/ ./app.
      看看这个tutorial

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多