多个域名指向同一个网站

多个域名指向同一个网站

我是一个非常热心的程序员,但最近转向了 Web 开发,所以如果这个问题有点愚蠢,我深表歉意。

我正在构建一个应支持多个域的电子商务 Web 应用程序。假设我的应用程序中运行着 2 个商店,每个商店都有自己的自定义域。

应用程序位于:www.main-app.com
商店 1 位于:www.store1.com
商店 2 位于:www.store2.com

我需要重定向所有请求store1.comstore2.com传递main-app.com一个 id,即商店 ID。商店 ID 用于加载每个商店的所有组件。

我已成功将 CNAME 记录添加到指向的 store1 和 store2 www.main-app.com。到目前为止一切顺利,当我www.store1.com在浏览器中输入时,主应用程序会显示在屏幕上,但我如何传递商店 ID 以便它知道要加载哪个商店?

哪种方法可以最好地实现这一功能?

本质上,我想输入www.store1.comwww.main-app.com接收加载 store1 的请求。我不想使用域转发,比如输入后www.store1.com它会将用户重定向到类似 的内容www.main-app.com?storeId=1

我希望我已经表达清楚了。

答案1

网络浏览器将发送Host标题以及对 Web 应用程序的每个请求。此标头将包含用于访问站点的域。您可以使用此标头根据用户访问站点时使用的域来更改站点的外观。

答案2

任意数量的记录都可以指向同一台服务器,这将使服务器从所有域获取请求。通常这用于使用一个 Web 服务器托管多个域。自 HTTP 1.1 以来,服务器知道请求是针对哪个域的,HTTP 1.1 在请求的主机名的标头中添加了一个字段。

在 Apache 上,当您托管多个域时,您可以创建一个 VirtualHost,并通常为它们各自提供文件位置的路径。但是,对于您描述的内容,您将为每个商店创建一个虚拟主机,但将它们的所有根文件夹设置为包含主应用程序文件的同一路径。

在应用程序本身中,您甚至不需要 ID,因为所有请求都会带有一个字段,该字段会告诉您请求针对的是哪个主机。有了它,您可以索引商店之间不同的任何数据。在这种情况下,无需重定向任何内容。

Apache 可以使用 RewriteRule 来自动化该过程,它需要mod_rewrite安装并启用。您要做的就是告诉它根据请求的域使用不同的参数调用页面。例如,您可以告诉它按照您的建议为每个请求添加一个 storeId,并使用该 storeId 来驱动逻辑。其他 Web 服务器可能具有等效功能,我只是使用 Apache 来描述这一点,因为它是我最了解的。

相关内容