同一域上的多个Magento 1.9网站/商店

时间:2015-04-25 13:06:16

标签: php .htaccess magento e-commerce

我需要创建单独的零售店和批发店,并计划使用URL结构mysite.com/store和我的site.com/wholesale在同一个域上执行此操作。

我在Magento后端创建了单独的网站,并输入了相关的不安全/安全基本网址。 mysite.com/store工作得非常好并且展示了所有产品......但是如果我去mysite.com/wholesale我只需要一台标准服务器404(而不是Magento 404)。

如何正确设置?我的根目录中是否需要“批发”文件夹,或者对Magento根目录中的.htaccess进行更改或类似的事情?

关于SO或magento.stackexchange的每个教程或问题似乎都基于不同域/子域上的不同商店。

3 个答案:

答案 0 :(得分:3)

为了在同一域名下为不同商店使用单独的文件夹,您可以使用相对较新的"添加商店代码到网址" -option。

您可以在System > Configuration > Web > Url Options下找到此动作。 core_config路径为web/url/use_store

screenshot: magento "add store-code to url"-option

要使用此选项,您应该

  1. 对商店使用相同的base-url(无需将/wholesale文件夹添加到基本网址)
  2. 商店代码设置为您希望作为基本网址的子文件夹使用的相同名称(例如" wholesale")
  3. Animation showing the steps of adding the Magento store-code to the URL

    这与您正在使用的Web服务器无关。因此,不需要更改任何.htaccess文件。

    如果您要将网站文件夹命名为与商店代码不同的名称,则必须创建该文件夹并向其添加自定义index.php以设置正确的商店代码:

    <?php
    
    /**
     * Error reporting
     */
    if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
        error_reporting(E_ALL | E_STRICT);
        ini_set("display_errors", 1);
        ini_set("log_errors", 1);
    } else {
        error_reporting(E_ERROR);
        ini_set("display_errors", 0);
        ini_set("log_errors", 1);
    }
    
    /**
     * Compilation includes configuration file
     */
    define('MAGENTO_ROOT', dirname(getcwd()));
    
    $compilerConfig = MAGENTO_ROOT . '/includes/config.php';
    if (file_exists($compilerConfig)) {
        include $compilerConfig;
    }
    
    $mageFilename = MAGENTO_ROOT . '/app/Mage.php';
    $maintenanceFile = 'maintenance.flag';
    php_dir('downloader')) {
            header("Location: downloader");
        } else {
            echo $mageFilename." was not found";
        }
        exit;
    }
    
    if (file_exists($maintenanceFile)) {
        include_once dirname(__FILE__) . '/errors/503.php';
        exit;
    }
    
    require_once $mageFilename;
    
    /**
     * Enable developer mode
     */
    if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
        Mage::setIsDeveloperMode(true);
    }
    umask(0);
    
    Mage::run('wholesale', 'store');
    

    除了两个位置

    之外,默认的index.php几乎没有任何变化
    • 你必须告诉Magento真正的根源是:define('MAGENTO_ROOT', dirname(getcwd()));
    • 您必须指定商店代码:Mage::run('wholesale', 'store');

    所有其他行都是标准的Magento。

    从理论上讲,你也应该能够通过重写规则来完成相同的工作,但我从来没有让它正常工作。

答案 1 :(得分:0)

您使用的是什么网络服务器,您可以使用简单的nginx配置解决此问题。

答案 2 :(得分:0)

问题在于,当你访问mysite.com/wholesale时,Apache Web服务器认为它是一个目录。这就是为什么你得到404而不是Magento生成的原因。你在Magento网站的根目录中有标准的Magento .htaccess吗?