同一域上的多个 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
.
要使用此选项,您应该
- 对商店使用相同的基础-url(无需将
/wholesale
文件夹添加到基础 url)
- 将商店代码设置为您希望作为基础子文件夹的名称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。
理论上你也应该能够通过重写规则来完成同样的事情,但我从来没有让它正常工作。
我需要创建单独的零售和批发商店,并计划使用 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
.
要使用此选项,您应该
- 对商店使用相同的基础-url(无需将
/wholesale
文件夹添加到基础 url) - 将商店代码设置为您希望作为基础子文件夹的名称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。
理论上你也应该能够通过重写规则来完成同样的事情,但我从来没有让它正常工作。