【问题标题】:How to create a site instance per subdomain如何为每个子域创建一个站点实例
【发布时间】:2023-03-20 09:20:01
【问题描述】:

我想创建一个网络平台,让每个客户都有自己的网站,例如uservoice.com

示例:

  • 主网站:uservoice.com
  • 客户 1:cust1-subdomain.uservoice.com
  • 客户 2:cust2-subdomain.uservoice.com

目标是客户可以通过自己的网址和登录页面进入其网站。

有人知道怎么做吗?如何避免子域的子目录并复制所有文件?我正在寻找一个干净且可扩展的解决方案。

【问题讨论】:

    标签: web subdomain url-routing uservoice


    【解决方案1】:

    我认为解决方案是基于名称的虚拟主机。

    例如,域 cust2-subdomain.uservoice.com 将显示位于与 DocumentRoot 不同的文件夹中的内容,但地址将保持不变。服务器将识别域并发送适当的内容。


    如果您使用的是 apache:如果尚未取消注释,则需要在 httpd.conf 文件中取消注释此行:
    Include conf/extra/httpd-vhosts.conf
    

    那么你应该编辑 /usr/local/apache2/conf/extra/httpd-vhosts.conf。

    <VirtualHost *:80>
        ServerAdmin you@uservoice.com
        DocumentRoot "/usr/local/apache2/docs/uservoice.com"
        ServerName uservoice.com
        ServerAlias www.uservoice.com
        ErrorLog "logs/uservoice.com/error_log"
        CustomLog "logs/uservoice.com/access_log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerAdmin cust2@uservoice.com
        DocumentRoot "/users/customers/cust2/WWW"
        ServerName cust2-subdomain.uservoice.com
        ServerAlias www.cust2-subdomain.uservoice.com
        ErrorLog "logs/cust2/error_log"
        CustomLog "logs/cust2/access_log" common
    </VirtualHost>
    

    第一部分用于您的网站,第二部分用于 cust2 的网站。因此 cust2 会将他的站点放入位于其主目录中的 WWW 文件夹中。您将把内容放在旧的 DocumentRoot 中。 (您需要自定义 /usr/local/apache2/conf/extra/httpd-vhosts.conf)。

    【讨论】:

    • 为了访问 cust2-subdomain.uservoice.com,我是否还需要创建一个 DNS 子域,或者它将由 Apache 处理,我只需要在我的 dns 中注册 uservoice.com?
    • 是的。您也可以使用通配符 DNS 记录。 stackoverflow.com/questions/13441418/…
    • 你可以用这个注册所有子域:*.uservoice.com
    • 是的,我将使用通配符 dns 记录。
    • 当我正在开发一个 asp.net 平台时,我将使用 MVC 路由。我也可以使用 iis 重写模块来实现我的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多