2015-04-25 3 views
1

Мне нужно создать отдельные розничные и оптовые магазины и планировать это в том же домене, используя структуру URL mysite.com/store и мою site.com/wholesale.Несколько Magento 1.9 Веб-сайты/магазины в том же домене

Я создал отдельные сайты в бэкэнде Magento и ввел соответствующие незащищенные/защищенные базовые URL-адреса. mysite.com/store отлично работает и показывает все продукты и т. д. Однако, если я перехожу на mysite.com/wholesale, я просто получаю стандартный сервер 404 (в отличие от Magento 404).

Как я могу установить это правильно? Нужна ли мне «оптовая» папка в корневом каталоге или вносить изменения в .htaccess в корень Magento или что-то подобное?

Каждый учебник или вопрос о SO или magento.stackexchange, по-видимому, основаны на отдельных магазинах в разных доменах/поддоменах.

ответ

3

Чтобы использовать отдельные папки для разных магазинов под одним и тем же доменным именем, вы можете использовать релятивно новый «Добавить код магазина в URL» -описание.

Вы можете найти это описание под System > Configuration > Web > Url Options. Путь core_config - web/url/use_store.

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

Для использования этой опции вы должны

  1. используют один и тот же базовый-адрес для магазинов (нет необходимости добавить папку /wholesale к базовому URL)
  2. Установить Код с тем же именем, который вы хотели бы иметь в качестве подпапки вашего базового URL-адреса (например, «оптовая торговля»)

Animation showing the steps of adding the Magento store-code to the URL

Это работает независимо от используемого вами веб-сервера. Поэтому никаких изменений в каких-либо файлах .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.

Теоретически вы также должны быть в состоянии выполнить то же самое с правилами перезаписи, но у меня никогда не было этого, чтобы работать должным образом.

0

Какой веб-сервер вы используете, вы можете исправить это с помощью простой конфигурации nginx.

+0

Я использую веб-сервер Apache. – Mark

0

Проблема заключается в том, что при переходе на mysite.com/wholesale веб-сервер Apache считает, что это каталог. Вот почему вы получаете 404 вместо генерируемого Magento. У вас есть стандартный Magento .htaccess в корне сайта Magento?

+0

Я использую стандартный .htaccess, который поставляется с Magento. Нужно ли добавить правило перезаписи? – Mark

Смежные вопросы