答案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 设置通配符。然后在代码中,使用的服务器名称位于标头中,只需读取它即可提供自定义内容或根据需要重定向到子文件夹。