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

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

自动创建子域名的最佳方法是什么(例如大本营)?

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

就像是 替代文本

答案1

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

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

www                      IN A       123.456.789.012
*                        IN CNAME   www

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

我不懂 perl,但在 PHP 中您可以随时像这样访问主机名:

$_SERVER['HTTP_HOST']

我确信 Perl 中有一个等效函数可以访问 HTTP 请求的 Host-Header。我们使用一个中央 PHP 脚本文件来实现此目的。

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

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

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

答案2

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

相关内容