Клиент хочет, чтобы его магазин был настроен следующим образом:
- 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), чтобы минимизировать дублирование файлов, но я хотел бы найти решение, где мне не нужно вносить какие-либо изменения в файловую систему, а просто обрабатывать все по конфигурации.
ОБНОВИТЬ
Благодаря поддержке Enterprise мы убедились, что лучший способ сделать это - создать подпапки.
В итоге мы сделали это так:
- Создайте каталог "languagefolders"
- Создал копию index.php внутри каталога вместе с настроенным .htaccess и символическими ссылками на папки Magento (app /, errors /, ...)
- Созданы символические ссылки "de", "en" и т. Д. Внутри корневого каталога Magento, указывающие на каталог "languagefolders"
Таким образом, мы можем добавить новый язык, создав новую символическую ссылку (например, «fr»).
источник
Ответы:
Очень легко обслуживать несколько доменов / путей на основе URL. Как уже упоминалось, самая простая настройка (только для конфигурации) возможна, когда уникальные
core/store
коды могут использоваться в пути в качестве подпапок . Это требует одного из следующих:Что касается # 3: начиная с версии 1.4 Magento, стало возможным позволить веб-серверу определять работающий контекст ( веб-сайт или магазин ), а также конкретный код, который следует использовать. Из index.php :
Принимая во внимание, что переменные среды используются для инициализации приложения, возможно влияние на систему до того, как PHP даже раскрутится. С помощью Apache
mod_rewrite
это можно сделать для подпапок с небольшим количеством хитрости:Apache дергается с переменными окружения и подпапками, как показывает этот превосходный ответ SO . Первые две строки приводят к тому
$_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';
, что последние две строки обеспечивают необходимое$_SERVER["MAGE_RUN_CODE"] = 'deutsch';
. Есть множество других трюков, но вышесказанное укусило меня раньше.Конечной целью должно быть начальное обнаружение, насколько это разумно (geoip + многоязычность), при этом пользователь должен установить cookie-файл хранилища, который можно использовать для обхода / пошагового прохождения логики в последующих запросах.
источник
mode_rewrite
), основанное наHTTP_HOST
+Если URL-адреса (подпапки) с отступом могут иметь то же имя, что и коды магазинов (почему нет?), Вы можете просто включить их
Configuration > Web > Url options > Add Store Code to Urls
.источник
Add store codes to url
магазина? magento.stackexchange.com/questions/60686/… = предположим, что там 1 мультимагазин с доменами sep, другой использует / en и / frв итоге мы сделали именно это
Благодаря поддержке Enterprise мы убедились, что лучший способ сделать это - создать подпапки.
В бэкэнде мы установили магазин
base url
наdomain.com/en
Если вы используете nginx, для обработки вашего местоположения необходимо обновление, чтобы обработать index.php также в новой подпапке. Это должно быть сделано для каждой новой папки перевода
источник
location @rewrite { rewrite /(../)? /$1index.php; }
В официальной базе знаний Magento есть запись которая описывает именно это.
Если вы работаете с Apache, убедитесь, что все записи Виртуального хоста (для каждого домена) указывают на тот же корень документа, где находится ваша установка Magento. Это для нескольких доменов.
Следующая (и последняя) вещь - это .htaccess в той же папке установки Magento. .htaccess - это мощный файл конфигурации на уровне каталогов, в котором вы можете устанавливать правила-действия для каждого запроса к серверу. Таким образом, вам нужно будет обработать все различные (под) домены / действия с папками и установить правильные переменные сервера, которые Magento использует на этапе инициализации.
После того, как вы закончите настройку сервера, вам нужно будет установить разные базовые пути для каждого магазина в администраторе Magento (система - конфигурация - общие сведения - сеть).
Поэтому убедитесь, что вы следуете официальному руководству (которое также является предпочтительным способом), и все должно работать гладко.
источник
Сначала вы должны выполнить некоторую настройку в админ-панели Magento, затем создать подкаталог и переместить index.php и .htaccess в подкаталог и внести некоторые незначительные изменения в index.php.
Вот полный пример того, как это сделать.
источник