Несколько сайтов, настройка нескольких доменов Magento 2 после миграции - PullRequest
0 голосов
/ 29 октября 2019

Я перенес магазин Magento 1 в Magento 2. Все работает, как и ожидалось, за исключением настройки нескольких веб-сайтов. Моя первоначальная установка M1 состояла из 1 веб-сайта с 2 магазинами (разные домены: .nl и .be), у обоих было 2 магазина (разные языки NL и EN, NL и FR). Вся документация, которую я могу найти, показывает, как настроить веб-сайты и магазины в Magento2 и что нужно изменить в index.php, чтобы получить желаемый результат в веб-интерфейсе. Моя проблема в том, что вся эта документация предоставляет решения для отображения нескольких веб-сайтов, но моя установка состоит из 1 веб-сайта и, следовательно, одного кода веб-сайта («базовый»). Также это не объясняет, как нужно настроить второй домен, что я могу поместить в индексный файл? Я полагаю, что вместо этого мне нужно использовать код хранилища, но я не могу заставить работать второй домен. Основной домен работает (потому что это «базовый»).

enter image description here

Вот что я пробовал до сих пор:

  • Я настроил второй домен и создал символические ссылки на основную папку для app, var, pub и lib.
  • Различные изменения отредактировали index.php в корне моего сайта. Ниже приведен лишь один пример из многих, которые я пробовал, я показываю этот, потому что в моей голове должно быть что-то вроде этого.

$params = $_SERVER;

switch($_SERVER['HTTP_HOST']) {
        case 'spijl-in-stijl.be':
        case 'www.spijl-in-stijl.be':
             $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'spijl-in-stijlbe';
             $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'store';
        break;
default:
	$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'base';
	$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
    }
  • Создал и отредактировал index.php в моей второй папке домена. Он либо показывает 403 запрещенных, либо перенаправляет меня на основной домен.
  • Пробовал использовать коды магазинов вместо кодов веб-сайтов, но выдает ошибки (не удается найти запрошенный магазин)
  • Попытка редактированияпросмотры магазина на бэкенде, изменив настройку второго хранилища, сломали весь сайт, могли восстановить его только путем редактирования базовых URL в базе данных.
  • Отредактировал htaccess в корне, добавил отредактированный htaccess во втором домене

Настройки в бэкэнде установлены правильно. Все базовые URL установлены правильно. Все сводится к одной и той же теории> Вероятно, это сработало бы, если бы код веб-сайта был разным для обоих доменов.

Я действительно надеюсь, что кто-то может помочь мне с этим.

1 Ответ

0 голосов
/ 31 октября 2019

Для запуска Magento в режиме нескольких магазинов вам не нужно создавать несколько каталогов. Единственное исключение состоит в том, что если вашему хостинг-провайдеру нужны отдельные каталоги для каждого домена, который вы размещаете, но для большинства провайдеров это не так.

Убедитесь, что на вашем сервере и magento выполнены следующие конфигурации для запуска несколькихstore.

Настройте базовый URL:

Перейдите на Magento admin >> Stores >> Configurations и затем переключите область конфигурации на соответствующий магазин / веб-сайт. Затем замените существующий настроенный URL-адрес новым URL-адресом для соответствующего магазина. Этот URL будет полезен: https://mageplaza.com/kb/how-to-setup-multiple-stores-magento-2.html

Настройка .htaccess:

Добавьте приведенный ниже код в ваш файл .htaccess в webroot после замены значений на правильный код магазинаи доменное имя.

SetEnvIf Host yourwebsite.com MAGE_RUN_CODE={{YOUR STORE CODE HERE}}
SetEnvIf Host yourwebsite.co.uk MAGE_RUN_TYPE=store

Как только вышеуказанная конфигурация будет выполнена, вы можете удалить изменения, внесенные в index.php.

Внесение изменений в .htaccess также не очень хорошая практика,Вы также можете сделать это, настроив его в файле vhost.

Для Apache:

<VirtualHost *:80>
            ServerName yourwebsite.com

            DocumentRoot {{Your webroot}}

            <Directory {{Your webroot}}/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
            </Directory>

            SetEnv MAGE_RUN_CODE "store1_code"
            SetEnv MAGE_RUN_TYPE "store"
</VirtualHost>

<VirtualHost *:80>
        ServerName yourwebsite.co.uk

                DocumentRoot {{Your webroot}}

                <Directory {{Your webroot}}/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                </Directory>

                SetEnv MAGE_RUN_CODE "store2_code"
                SetEnv MAGE_RUN_TYPE "store"
</VirtualHost>

Для Nginx:

server {
    listen 80;
    server_name yourwebsite.com
    set $MAGE_ROOT {{Your webroom}};
    set $MAGE_RUN_CODE = store1_code;
    set $MAGE_RUN_TYPE = store;
}

server {
    listen 80;
    server_name yourwebsite.co.uk
    set $MAGE_ROOT {{Your webroom}};
    set $MAGE_RUN_CODE = store2_code;
    set $MAGE_RUN_TYPE = store;
}

Примечание: приведенный выше пример кода выигралне нужно просто копировать и вставлять, вместо этого вам нужно будет заменить значения конкретными значениями для вашего сайта, скопировать необходимые конфигурации отсюда и разместить соответствующий раздел конфигурации вашего сайта / веб-сервера

...