【问题标题】:How do you create subdomains using PHP? Is is possible on shared hosting?如何使用 PHP 创建子域?是否可以在共享主机上使用?
【发布时间】:2011-01-22 08:46:35
【问题描述】:

我有兴趣直接从 php 动态创建子域。例如,当用户创建一个新页面时,我希望该页面为 newpage.mydomain.com。是否可以在不更改 php 或 apache 配置文件的情况下实现(假设我使用的是共享主机帐户)。

稍后编辑:我说的是我的域,我可以完全访问域管理区域。

【问题讨论】:

    标签: apache .htaccess php subdomain


    【解决方案1】:

    仅通过 php 是不可能的。而且我认为共享主机不允许这样做。 无论如何,为此您必须拥有一个域(或有权编辑 DNS 记录),然后您可以添加通配符记录以允许任何子域指向单个机器(由其 IP 地址标识)

    编辑(来自 Powerlord 评论)

    apache 必须将每个子域重定向到同一个虚拟主机 通常在虚拟主机配置中使用ServerAlias *.example.com

    /编辑

    然后在php中你可以通过解析(拆分)$_SERVER['HOST_NAME']来检查页面是从哪个子域请求的

    例如:

    $host = explode ('.', $_SERVER['HOST_NAME']);
    array_pop ($host);
    array_pop ($host);
    $subdomain = join ('.', $host);
    

    【讨论】:

    • 这是错误的。我完全按照 OP 在数千页上的要求进行操作。
    • @Laykes:这真的取决于你的主机是如何配置的。默认情况下,Apache(OP 正在询问)确实 not 让您这样做;相反,它会退回到_default_ 虚拟主机,如果失败了,则主服务器配置。
    • 这是怎么回事?我解释一下,您需要这样做并表示>我
    【解决方案2】:

    是的,您可以这样做。 您需要确保首先在您的域注册 DN 面板中针对您的域设置通配符 * 一条记录。

    设置通配符后,您只需查看 >

     $_SERVER["SERVER_NAME"]
    

    【讨论】:

      【解决方案3】:
      1. 在您的 .htaccess 文件中设置一个错误文档,将每个 404 重定向到一个名为 redirection.php 的文件。这个 .php 文件将处理“动态”重定向。

      2. 在您的区域文件中添加通配符 DNS 记录,以便 [whateverhere].yourdomain.com 指向您的网络服务器的 IP

      3. 在 apache 配置中添加通配符服务器别名,方法是: 服务器别名 *.yourdomain.com

      4. 在你的redirection.php文件中写下以下代码。

      .

      <?php
      
      $url = $_SERVER["REQUEST_URL"];
      $newurl=str_replace(".yourdomain.com","",$url);
      $newcomplete="http://yourdomain.com/".$newurl;
      Header("Location: ".$newcomplete);
      
      ?>
      

      这有点帮助吗?

      【讨论】:

      • 这可能适用于共享主机,如果您的提供商允许您为您的网络服务器设置“包罗万象”。请联系托管服务提供商。
      • 真的需要重定向吗?我可以直接分析请求 url 并据此构建页面。
      • 那么您可以采用这种方法,但是您仍然需要一个通配符 DNS 条目,并且 apache 需要知道如何响应假的子域名。
      猜你喜欢
      • 1970-01-01
      • 2015-01-16
      • 2016-07-03
      • 1970-01-01
      • 2018-11-29
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多