自动创建子域(xyz.serverfault.com)

Qui*_*Par 3 domain web-server subdomain domain-name apache-2.2

自动创建子域(如Basecamp)的最佳方法是什么?

我的要求有点类似于 Basecamp,用户从页面请求一个子域,我从我的业务逻辑为他们创建它。

就像是 替代文字

Zim*_*Zim 8

我们在我们的网站上使用相同的技术。我们的服务器在 Linux 上运行 Apache、MySQL 和 PHP。

我们的 DNS 记录包含一个像 EK 已经建议的子域通配符条目:

www                      IN A       123.456.789.012
*                        IN CNAME   www
Run Code Online (Sandbox Code Playgroud)

这会将所有对 xyyourdomain.com 的请求重定向到与 www.yourdomain.com 相同的 IP - 也可以有子域的子域。

我不知道 perl,但在 PHP 中,您可以随时访问主机名,如下所示:

$_SERVER['HTTP_HOST']
Run Code Online (Sandbox Code Playgroud)

我确信 Perl 中有一个等效的东西来访问 HTTP 请求的主机头。为此,我们使用中央 PHP 脚本文件。

编辑:找到一些时间来提供有关处理这些域的更多详细信息。

您可以将完整的子域保存为数据库中的主键。这保证了用户输入的域是唯一的。您还可以在用户注册期间使用此信息进行可用性检查。

我猜您的应用程序可以通过用户 ID 或类似的东西来处理多个用户。只需将此用户 ID 与数据库中的子域一起保存即可。现在您可以随时通过 HTTP-Host 标头发送的当前域查找用户 ID。

  • 在 Perl 中,这是使用 CGI 和 %ENV 散列来完成的——从 CGI,您可以像这样访问它:“my $host = $ENV{HTTP_HOST};” (2认同)

Jam*_*yan 5

在您的域上为 *.yourdomain.com 设置通配符。然后在代码中,使用的服务器名称在标题中,只需阅读它即可提供自定义内容或根据需要重定向到子文件夹。