Различные магазины или веб -сайты в подпапке
-
16-10-2019 - |
Вопрос
Клиент хочет, чтобы его многомерный магазин был настроен таким образом:
- http://www.domain1.org/de/ -> Веб -сайт 1, просмотр магазина 1
- http://www.domain1.org/en/ -> Веб -сайт 1, Просмотр магазина 2
- http://www.domain1.ch/de/ -> Веб -сайт 2, Просмотр магазина 3
- http://www.domain1.ch/fr/ -> Веб -сайт 2, просмотр магазина 4
- http://www.domain1.ch/it/ -> Веб -сайт 2, просмотр магазина 5
- ...
Это пример, но может быть гораздо больше разных подпапок. Какой лучший подход для обработки различных подпапок для разных видов магазина / веб -сайтов?
Я знаю, что одно решение - создать подпапки, называемые de
, en
и т. д. и скопируйте index.php и .htaccess в соответствующие подпапки.
Также могут быть некоторые обходные пути (символики для index.php, конфигурация vhost вместо использования .htaccess), чтобы минимизировать дублирование файлов, но я бы хотел найти решение, где мне не нужно вносить никакие изменения в файловой системе, но просто Обработайте все по конфигурации.
ОБНОВИТЬ
Мы подтвердили поддержку предприятия, что лучший способ сделать это - создать подпапки.
Мы закончили тем, что сделали это так:
- Создать каталог «языковые переключения»
- Создал копию index.php внутри каталога вместе с скорректированными .htaccess и символиками в папки Magento (приложение/, ошибки/, ...)
- Созданные символики «de», «en» и т. Д. Внутри справочника Magento Root, указывающего на каталог «языковые рассылки»
Таким образом, мы можем добавить новый язык, создав новую символику (например, «FR»).
Решение
Очень легко обслуживать несколько доменов/путей на основе URL -адресов. Как уже упоминалось, Самая простая настройка (только конфигурация) возможна, когда уникальная core/store
Коды могут использоваться на пути в качестве подпапок. Анкет Это требует одного из следующих действий:
- Посетители сначала связаны с правильным путем подпапки
- Посетителям подают целевую страницу, из которой они выбирают свой магазин и получают печенье
- Некоторый механизм используется для установки типа запуска и запуска кода до обработки PHP ответа
Относительно № 3: с 1.4 Magento, позволил веб -серверу определить контекст работает (Веб-сайт или же хранить) а также конкретный код, который следует использовать. Из index.php:
/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
Mage::run($mageRunCode, $mageRunType);
В то время как переменные среды используются для инициализации приложения, можно влиять на систему до PHP даже вращения. С Apache и mod_rewrite
Это можно сделать для подпапков с небольшим количеством обмана:
RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]
Apache является дерзкой с переменными окружающей среды и подпапками, о чем свидетельствуют это отличное, так что ответ. Анкет Первоначальные две строки приводят к $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';
в то время как последние две линии обеспечивают необходимые $_SERVER["MAGE_RUN_CODE"] = 'deutsch';
. Анкет Есть множество других трюков, но вышеупомянутое укусило меня раньше.
Конечная цель должна быть первоначальным обнаружением столько, сколько является разумным (Geoip + Multi-Language Contries), одновременно заставить пользователя установить файл cookie Store, который можно использовать для обхода/шага через логику в последующих запросах.
Другие советы
Если URL -адреса с отступом (подпапки) могут иметь то же имя, что и коды хранилища (почему бы и нет?), Вы можете просто включить Configuration > Web > Url options > Add Store Code to Urls
.
Мы закончили тем, что сделали именно это
Мы подтвердили поддержку предприятия, что лучший способ сделать это - создать подпапки.
Мы закончили тем, что сделали это так:
- Создать каталог «языковые переключения»
- Создал копию index.php внутри каталога вместе с скорректированными .htaccess и символиками в папки Magento (приложение/, ошибки/, ...)
- Созданные символики «de», «en» и т. Д. Внутри справочника Magento Root, указывающего на каталог «языковые рассылки»
Таким образом, мы можем добавить новый язык, создав новую символику (например, «FR»).
В бэкэнд мы установили магазин base url
к domain.com/en
Если вы используете NGINX, для обработки вашего местоположения необходимо обновление для обработки местоположения для процесса index.php также в новой под папке. Это должно быть сделано для каждой новой папки перевода
Есть Вход в официальную базу знаний Magento Это точно описывает это.
Если вы работаете с Apache, убедитесь, что все записи виртуальных хостов (для каждого домена) указывают на тот же корень документа, где лежит установка Magento. Это для нескольких доменов.
Следующая (и последняя) вещь - это .htaccess В той же папке установки Magento. .htaccess-это мощный файл конфигурации на уровне каталогов, в котором вы можете установить правила-действия по каждому запросу сервера. Таким образом, вам нужно будет обрабатывать все различные (суб) домены/папки, и установить правильные переменные сервера, которые Magento использует на этапе инициализации.
После того, как вы закончите с конфигурацией сервера, вам придется установить разные базовые пути для каждого хранилища в Magento Admin (System - Configuration - General - Web).
Поэтому убедитесь, что вы следовали официальному руководству (что также является предпочтительным способом), и все должно работать гладко.
Сначала вам нужно сделать некоторую конфигурацию на панели администратора Magento, затем создать подкаталог, переместить index.php и .htaccess в подкаталог, и внесите некоторые незначительные изменения в index.php.
Здесь это полный пример того, как это сделать.