
Soy un programador bastante ávido, pero recientemente pasé al desarrollo web, así que pido disculpas si esta pregunta es algo tonta.
Estoy creando una aplicación web de comercio electrónico que debería admitir múltiples dominios. Digamos que tengo 2 tiendas ejecutándose en mi aplicación, cada una con su propio dominio personalizado.
La aplicación está ubicada en: www.main-app.com
La tienda 1 está ubicada en: www.store1.com
la tienda 2 está ubicada en:www.store2.com
Necesito redirigir todas las solicitudes realizadas en store1.com
y store2.com
hacia el main-app.com
paso de una identificación, que es la identificación de la tienda. el ID de la tienda se utiliza para cargar todos los componentes de cada tienda.
Logré agregar registros CNAME a store1 y store2 apuntando a www.main-app.com
. Hasta ahora todo bien, cuando escribo www.store1.com
en mi navegador, la aplicación principal aparece en la pantalla, pero ¿cómo puedo pasar el ID de la tienda para que sepa qué tienda cargar?
¿Cuál sería el mejor enfoque para hacer posible esta característica?
En esencia, quiero escribir www.store1.com
y www.main-app.com
recibo una solicitud para cargar store1. No quiero utilizar el reenvío de dominio, como escribir www.store1.com
y redirige al usuario a algo como www.main-app.com?storeId=1
.
Espero haber sido claro.
Respuesta1
El navegador web enviará unHost
encabezamientojunto con cada solicitud a su aplicación web. Este encabezado contendrá el dominio utilizado para acceder al sitio. Puede utilizar este encabezado para cambiar la apariencia del sitio según el dominio que el usuario esté utilizando para acceder.
Respuesta2
Cualquier cantidad de registros puede apuntar al mismo servidor, lo que hará que el servidor reciba solicitudes de todos los dominios. Por lo general, esto se utiliza para alojar varios dominios utilizando un servidor web. Los servidores saben para qué es la solicitud desde HTTP 1.1, que agregó un campo en el encabezado para el nombre de host solicitado.
En Apache, cuando aloja varios dominios, crea un VirtualHost y normalmente les da a cada uno una ruta a la ubicación de sus archivos. Sin embargo, para lo que usted describe, crearía un host virtual para cada tienda pero configuraría todas sus carpetas raíz en la misma ruta que tendría los archivos de su aplicación principal.
En la aplicación en sí ni siquiera necesitaría una identificación porque todas las solicitudes incluirán un campo que le indica para qué host es la solicitud. Con eso puedes indexar cualquier dato que sea diferente entre tiendas. En este caso no es necesario redirigir nada.
Apache puede automatizar el proceso usando una RewriteRule que requieremod_reescriturainstalado y habilitado. Lo que haces es decirle que invoque páginas con un parámetro diferente según el dominio solicitado. Por ejemplo, podría decirle que agregue un storeId a cada solicitud como sugirió y usar ese storeId para controlar la lógica. Otros servidores web probablemente tengan algo equivalente, solo estoy usando Apache para describir esto ya que es el que mejor conozco.