在基于 Linux 的服务器中使用 PHP 动态创建子域

发布于 2024-08-24 21:49:57 字数 122 浏览 4 评论 0原文

我想使用 PHP 即时创建子域。假设用户将自己注册为名称“ABC”。然后我想通过 PHP 自动创建一个名为“ABC.mydomain.com”的子域。我正在使用基于Linux 的服务器。

有人会指出我正确的方向吗?

I want to create sub-domains using PHP on the fly. Suppose a user registers himself as a name "ABC". Then I want to create a sub-domain named 'ABC.mydomain.com' automatically by PHP. I'm using a linux based server.

Would anyone point me to the right direction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滥情稳全场 2024-08-31 21:49:59

您应该知道,使用通配符 DNS 记录可以轻松完成此操作。这样:

  • 您不必将每个用户注册到您的 DNS 服务器。
  • 您的 DNS A 记录可能只包含 1 条记录:例如 *.mydomain.com -> 12.34.56.78
  • 您位于 12.34.56.78 的 Web 服务器必须配置为接受通配符

在您的服务器端脚本中,您可以通过检查 abc 是否是现有的活动用户名来动态解析控制器/路由代码上的“abc.mydomain.com”,示例代码如下:

<?php

// Note that I am using SERVER_NAME vs HTTP_HOST, 
//    but for additional safety also check your httpd.conf
list($user, $domain) = split("\.", $_SERVER['SERVER_NAME'], 2);

// check if domain is correct, 
//    or you can leave this part if the web server checks this already
if ($domain === "mydomain.com") {

    // here, you verify $user if existent/active 
    // and reroute or render the page depending on request params 
    // ...

}

?>

You should be aware that this is easily done using wildcard DNS records. This way:

  • you do not have to register each user to your DNS server.
  • your DNS A-record may contain as few as 1 record: e.g *.mydomain.com -> 12.34.56.78
  • your web server at 12.34.56.78 have to be configured to accept wildcard

In your server-side scripts, you dynamically resolve "abc.mydomain.com" on your controller/routing code by checking if abc is an existing active username, sample code below:

<?php

// Note that I am using SERVER_NAME vs HTTP_HOST, 
//    but for additional safety also check your httpd.conf
list($user, $domain) = split("\.", $_SERVER['SERVER_NAME'], 2);

// check if domain is correct, 
//    or you can leave this part if the web server checks this already
if ($domain === "mydomain.com") {

    // here, you verify $user if existent/active 
    // and reroute or render the page depending on request params 
    // ...

}

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文