Gostaríamos de criar vários sites no Magento 2. Há um artigo sobre esse tópico na documentação oficial do Magento 2 , mas a maneira como eles descrevem não é adequada para o nosso caso.
Eles estão sugerindo o uso de subdomínios para determinar sites diferentes, como
- website1 .magento-site.com
- website2 .magento-site.com
Gostaríamos de usar subpastas em vez de subdomínios . Para dar um exemplo,
- magento-site.com/ website1
- magento-site.com/ website2
Como podemos superar esse problema no servidor da web Nginx?
Minha configuração
Estou usando o Ubuntu 16.04. Instalei o Nginx e não alterei nenhuma configuração principal do Nginx. Eu criei um arquivo magento-site.com.conf
dentro /etc/nginx/sites-enabled/magento-site.com.conf
.
/etc/nginx/sites-enabled/magento-site.com.conf
server {
listen 8080;
server_name magento-site.com;
set $MAGE_RUN_CODE website1;
set $MAGE_ROOT /var/www/magento-site.com;
include /var/www/magento-site.com/nginx.conf;
}
EDIT 1: (23-10-2017)
Eu tenho várias lojas para cada site.
magento2
nginx
multi-website
Bunyamin Inan
fonte
fonte
Respostas:
Eu tentei várias maneiras de realizar essa tarefa. Gostaria de agradecer a @ matias-hidalgo por suas contribuições, embora não tenha entendido sua resposta na primeira leitura :).
Aqui está o cenário. Temos dois sites diferentes e cada site tem duas visualizações diferentes da loja, como a seguir:
Website 1
Site 2
Na minha solução, vamos mudar algumas configurações no Magento Admin . Em seguida, criaremos algumas subpastas e , finalmente, modificaremos
nginx.conf
.Primeiro, precisamos fazer algumas alterações na configuração do Magento Admin . Vá para
Stores
->Configuration
->General
->Web
. Precisamos alterar os URLs base para cada visualização da loja.Para configuração padrão
Forneça a seguinte configuração para a configuração padrão.
Para o site 1 (comércio eletrônico) e o site 1 (Venda Assistida)
Forneça a seguinte configuração para todas as visualizações da loja do site 1 .
Para o site 2 (comércio eletrônico) e o site 2 (Venda Assistida)
Forneça a seguinte configuração para todas as visualizações de loja do site 2 .
Em segundo lugar, precisamos criar
website1
ewebsite2
pastas no/pub
diretório No final, você deve ter as seguintes pastas:MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Copie o
pub/index.php
arquivo para esses diretórios. Então, faremos algumas alterações emMAGENTO_ROOT/pub/website1/index.php
eMAGENTO_ROOT/pub/website2/index.php
.Conteúdo de
MAGENTO_ROOT/pub/website1/index.php
Eu mudei apenas três linhas:
1ª Linha:
require __DIR__ . '/../../app/bootstrap.php';
2ª Linha:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3ª Linha:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
Para o toque final, precisamos modificar
nginx.conf
no seu diretório MAGENTO_ROOT. Por favor, coloque a seguinte configuração no seunginx.conf
.Depois de todas essas configurações e modificações, você poderá usar sites como subpastas. Espero que ajude.
fonte
Pela configuração do Nginx, você pode usar esta configuração de exemplo:
e use este index.php como um exemplo:
Para esclarecer:
Na minha configuração do vhost nginx, você encontrará o seguinte:
onde a primeira "/ sua / subpasta" pode ser alterada para o que você quiser como URL do site. ex www.mywebsite.com/stack/magento -> / stack / magento
Então, para definir o código do site que será carregado nesse URL, você deve criar o index.php escrevendo o código do site aqui:
Espero que agora seja claro o suficiente, tenho que gastar um tempo em um projeto para fazer isso, para que eu saiba que funciona e que está mais perto de como costumávamos fazer isso no M1.
fonte
no seu domain.conf em "etc / nginx", você precisa criar um mapa.
por exemplo:
ou
fonte
website1.magento-site.com
, mas eu queromagento-site.com/website1
.map $http_host$uri $MAGE_RUN_CODE
Que tal uma solução nginx pura com esse mapa duplo?
Primeiro, pelo site (obrigado @MagenX)
Um segundo para o novo pedido uri
E, finalmente, não se esqueça de definir o novo REQUEST_URI computado
fonte