Nos gustaría crear múltiples sitios web en Magento 2. Hay un artículo sobre este tema en la documentación oficial de Magento 2 , pero la forma en que describen no es adecuada para nuestro caso.
Sugieren utilizar subdominios para determinar diferentes sitios web, como
- website1 .magento-site.com
- website2 .magento-site.com
Nos gustaría utilizar subcarpetas en lugar de subdominios . Para dar un ejemplo,
- magento-site.com/ website1
- magento-site.com/ website2
¿Cómo podemos superar este problema en el servidor web Nginx?
Mi configuracion
Estoy usando Ubuntu 16.04. He instalado Nginx y no he cambiado ninguna configuración central de Nginx. He creado un archivo 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;
}
EDITAR 1: (2017-10-23)
Tengo varias tiendas para cada sitio web.
magento2
nginx
multi-website
Bunyamin Inan
fuente
fuente
Respuestas:
He intentado numerosas formas de lograr esta tarea. Me gustaría agradecer a @ matias-hidalgo por sus contribuciones, aunque no entendí su respuesta en la primera lectura :).
Aquí está el escenario. Tenemos dos sitios web diferentes, y cada sitio web tiene dos vistas diferentes de la tienda de la siguiente manera:
Sitio web 1
Sitio web 2
En mi solución, vamos a cambiar alguna configuración en Magento Admin . Luego vamos a crear algunas subcarpetas , y finalmente vamos a modificar
nginx.conf
.En primer lugar, debemos realizar algunos cambios de configuración en el Administrador de Magento . Vaya a
Stores
->Configuration
->General
->Web
. Necesitamos cambiar las URL base para cada vista de la tienda.Para la configuración predeterminada
Proporcione la siguiente configuración para la configuración predeterminada.
Para el sitio web 1 (comercio electrónico) y el sitio web 1 (Venda Assistida)
Proporcione la siguiente configuración para todas las vistas de la tienda del sitio web 1 .
Para el sitio web 2 (comercio electrónico) y el sitio web 2 (Venda Assistida)
Proporcione la siguiente configuración para todas las vistas de la tienda del sitio web 2 .
En segundo lugar, necesitamos crear
website1
ywebsite2
carpetas en el/pub
directorio. En la final, debe tener las siguientes carpetas:MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Copie el
pub/index.php
archivo en estos directorios. Luego haremos algunos cambios enMAGENTO_ROOT/pub/website1/index.php
yMAGENTO_ROOT/pub/website2/index.php
.Contenido de
MAGENTO_ROOT/pub/website1/index.php
Solo he cambiado 3 líneas:
1ra línea:
require __DIR__ . '/../../app/bootstrap.php';
2da línea:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3ra línea:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
Para el toque final, necesitamos modificar
nginx.conf
en su directorio MAGENTO_ROOT. Ponga la siguiente configuración en sunginx.conf
.Después de todas estas configuraciones y modificaciones, podrá utilizar sitios web como subcarpetas. Espero que ayude.
fuente
Mediante la configuración de Nginx, puede usar esta configuración de ejemplo:
y use este index.php como ejemplo:
Para aclarar:
En mi configuración de vhost nginx encontrarás esto:
donde se puede cambiar la primera "/ tu / subcarpeta" para lo que quieras como URL del sitio web. ex www.mywebsite.com/stack/magento -> / stack / magento
Luego, para definir el código del sitio web que se cargará en esta url, debe crear el index.php escribiendo el código del sitio web aquí:
Espero que esto ahora sea lo suficientemente claro, tengo que pasar tiempo en un proyecto para hacerlo, así que sé que funciona y está más cerca de cómo solíamos hacerlo en M1.
fuente
en su domain.conf en "etc / nginx" necesita crear un mapa.
por ejemplo:
o
fuente
website1.magento-site.com
, pero quieromagento-site.com/website1
.map $http_host$uri $MAGE_RUN_CODE
¿Qué pasa con una solución nginx pura con este doble mapa?
Primero, para el sitio web (gracias @MagenX)
Un segundo para la nueva solicitud uri
Y, por último, no olvide configurar el nuevo REQUEST_URI calculado
fuente