同一域上的多个 Magento 1.9 Websites/Stores

Multiple Magento 1.9 Websites/Stores on same domain

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

我在 Magento 后端创建了单独的网站并输入了相关的 unsecure/secure 基本网址。 mysite.com/store 运行良好并显示所有产品等...但是如果我去 mysite.com/wholesale 我只是得到一个标准服务器 404(而不是 Magento 404)。

如何正确设置?我的根目录中是否需要一个 'wholesale' 文件夹或更改 Magento 根目录中的 .htaccess 或类似的东西?

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

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

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

为了在同一域名下为不同商店使用单独的文件夹,您可以使用相对较新的 "Add Store Code to Urls" 选项。

您可以在 System > Configuration > Web > Url Options 下找到此选项。 core_config 路径是 web/url/use_store.

要使用此选项,您应该

  1. 对商店使用相同的基础-url(无需将 /wholesale 文件夹添加到基础 url)
  2. 商店代码设置为您希望作为基础子文件夹的名称url(例如"wholesale")

这与您使用的 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。

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