Вопрос

Клиент хочет, чтобы его многомерный магазин был настроен таким образом:

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

Я знаю, что одно решение - создать подпапки, называемые de, en и т. д. и скопируйте index.php и .htaccess в соответствующие подпапки.

Также могут быть некоторые обходные пути (символики для index.php, конфигурация vhost вместо использования .htaccess), чтобы минимизировать дублирование файлов, но я бы хотел найти решение, где мне не нужно вносить никакие изменения в файловой системе, но просто Обработайте все по конфигурации.


ОБНОВИТЬ

Мы подтвердили поддержку предприятия, что лучший способ сделать это - создать подпапки.

Мы закончили тем, что сделали это так:

  • Создать каталог «языковые переключения»
  • Создал копию index.php внутри каталога вместе с скорректированными .htaccess и символиками в папки Magento (приложение/, ошибки/, ...)
  • Созданные символики «de», «en» и т. Д. Внутри справочника Magento Root, указывающего на каталог «языковые рассылки»

Таким образом, мы можем добавить новый язык, создав новую символику (например, «FR»).

Это было полезно?

Решение

Очень легко обслуживать несколько доменов/путей на основе URL -адресов. Как уже упоминалось, Самая простая настройка (только конфигурация) возможна, когда уникальная core/store Коды могут использоваться на пути в качестве подпапок. Анкет Это требует одного из следующих действий:

  1. Посетители сначала связаны с правильным путем подпапки
  2. Посетителям подают целевую страницу, из которой они выбирают свой магазин и получают печенье
  3. Некоторый механизм используется для установки типа запуска и запуска кода до обработки 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.

Здесь это полный пример того, как это сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top