Un cliente quiere que su tienda de varios pisos se configure de esta manera:
- http://www.domain1.org/de/ -> sitio web 1, vista de tienda 1
- http://www.domain1.org/en/ -> sitio web 1, vista de tienda 2
- http://www.domain1.ch/de/ -> sitio web 2, vista de tienda 3
- http://www.domain1.ch/fr/ -> sitio web 2, vista de tienda 4
- http://www.domain1.ch/it/ -> sitio web 2, vista de tienda 5
- ...
Este es un ejemplo, pero puede haber muchas más subcarpetas diferentes. ¿Cuál es el mejor enfoque para manejar diferentes subcarpetas para diferentes vistas / sitios web de la tienda?
Sé que una solución es crear subcarpetas llamadas de
, en
etc. y copiar el index.php y .htaccess en las subcarpetas correspondientes.
También puede haber algunas soluciones (enlaces simbólicos para index.php, configuración de vHost en lugar de usar .htaccess) para minimizar la duplicación de archivos, pero me gustaría encontrar una solución en la que no tenga que hacer ningún cambio en el sistema de archivos, sino solo manejar todo por configuración.
ACTUALIZAR
Verificamos con el soporte de Enterprise que la mejor manera de hacerlo es creando subcarpetas.
Terminamos haciéndolo así:
- Crear un directorio de "carpetas de idiomas"
- Creó una copia de index.php dentro del directorio junto con un .htaccess ajustado y enlaces simbólicos a las carpetas de Magento (aplicación /, errores /, ...)
- Se crearon enlaces simbólicos "de", "en", etc. dentro del directorio raíz de Magento apuntando al directorio "carpetas de idiomas"
De esta forma podemos agregar un nuevo idioma creando un nuevo enlace simbólico (por ejemplo, "fr").
fuente
Respuestas:
Es muy fácil servir múltiples dominios / rutas basados en URL. Como se mencionó, la configuración más fácil (solo configuración) es posible cuando los
core/store
códigos únicos se pueden usar en la ruta como subcarpetas . Esto requiere uno de los siguientes:Con respecto al n. ° 3: desde 1.4 Magento, permitimos que el servidor web determinara el contexto de ejecución ( sitio web o tienda ), así como el código particular que debería usarse. Desde index.php :
Mientras que las variables de entorno se utilizan para inicializar la aplicación, es posible influir en el sistema incluso antes de que PHP se active. Con Apache y
mod_rewrite
esto se puede hacer para subcarpetas con un poco de truco:Apache es nervioso con las variables de entorno y subcarpetas, como lo demuestra esta excelente respuesta SO . Las dos líneas iniciales dan como resultado
$_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';
mientras que las últimas dos líneas proporcionan lo necesario$_SERVER["MAGE_RUN_CODE"] = 'deutsch';
. Hay muchos otros trucos, pero lo anterior me ha mordido antes.El objetivo final debe ser la detección inicial tanto como sea razonable (geoip + preocupaciones multilingües) mientras se hace que el usuario configure la cookie de la tienda que se puede usar para omitir / pasar por la lógica en solicitudes posteriores.
fuente
mode_rewrite
) basada enHTTP_HOST
+ nivel de subcarpeta 1.Si las URL con sangría (subcarpetas) pueden tener el mismo nombre que los códigos de la tienda (¿por qué no?), Simplemente puede habilitarlas
Configuration > Web > Url options > Add Store Code to Urls
.fuente
Add store codes to url
una vista de tienda? magento.stackexchange.com/questions/60686/… = supongamos que hay 1 multitienda con dominios sep, los otros usos / en y / frterminamos haciendo exactamente eso
Verificamos con el soporte de Enterprise que la mejor manera de hacerlo es creando subcarpetas.
En el backend configuramos la tienda
base url
paradomain.com/en
Si usa nginx, es necesaria una actualización del procesamiento de su ubicación para procesar index.php también en la nueva subcarpeta. Esto debe hacerse para cada nueva carpeta de traducción
fuente
location @rewrite { rewrite /(../)? /$1index.php; }
Hay una entrada en la base de conocimiento oficial de Magento que describe exactamente eso.
En caso de que esté trabajando con Apache, asegúrese de que todas las entradas de Virtual Host (para cada dominio) apunten a la misma raíz del documento donde se encuentra su instalación de Magento. Eso es para múltiples dominios.
Lo siguiente (y último) es el .htaccess en la misma carpeta de instalación de Magento. .htaccess es un poderoso archivo de configuración de nivel de directorio donde puede establecer reglas-acciones por cada solicitud del servidor. Por lo tanto, deberá manejar todas las acciones de (sub) dominios / carpetas diferentes y establecer las variables de servidor correctas que Magento usa en la etapa de inicialización.
Una vez que haya terminado con la configuración del servidor, tendrá que establecer diferentes rutas base para cada una de las tiendas en Magento admin (sistema - configuración - general - web).
Así que asegúrese de seguir la guía oficial (que también es la forma preferida) y las cosas deberían funcionar sin problemas.
fuente
Primero debe hacer alguna configuración en el panel de administración de Magento, luego crear un subdirectorio, y mover index.php y .htaccess al subdirectorio, y hacer algunos cambios menores en index.php.
Aquí hay un ejemplo completo de cómo hacer esto.
fuente