4

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

例子:

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

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

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

4

1 回答 1

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)。

于 2015-07-23T16:19:55.670 回答