代码之家  ›  专栏  ›  技术社区  ›  adiian

如何使用php创建子域?在共享主机上可以吗?

  •  1
  • adiian  · 技术社区  · 16 年前

    我有兴趣直接从php动态创建子域。例如,当用户创建新页面时,我希望该页面为new page.mydomain.com。在不更改php或apache配置文件的情况下(假设我使用的是共享宿主帐户),这是可能的吗?

    稍后编辑:我说的是我的域,我有完全访问域管理区域的权限。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Urda Gael Fraiteur    16 年前
    1. 在.htaccess文件中设置一个错误文档,将每个404重定向到一个名为redirection.php的文件。这个.php文件将处理“动态”重定向。

    2. 在区域文件中添加通配符dns记录,以便[whateverhere].yourdomain.com指向Web服务器的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);
    
    ?>
    

    这有帮助吗?

        2
  •  0
  •   Layke    16 年前

    是的,你能做到。 您需要确保首先在“域注册DN”面板中针对域设置通配符*A记录。

    一旦设置了通配符,就可以查看>

     $_SERVER["SERVER_NAME"]
    
        3
  •  0
  •   Mathieu    16 年前

    单靠php是不可能的。我认为共享主机不允许这样。 无论如何,为了获得域的所有权(或编辑dns记录的权限),您可以添加通配符记录以允许任何子域指向单个计算机(由其ip地址标识)

    编辑(来自powerlord comment)

    apache必须将每个子域重定向到同一个vhost 通常与 ServerAlias *.example.com 在vhost配置中

    编辑

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

    如:

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