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

时间:2010-03-01 16:13:30

标签: apache .htaccess php subdomain

我有兴趣直接从php创建子域名。例如,当用户创建新页面时,我希望该页面为newpage.mydomain.com。如果没有更改php或apache配置文件(假设我使用的是共享主机帐户),这是可能的吗。

稍后编辑:我正在谈论我的域名,并且我可以完全访问域管理区域。

3 个答案:

答案 0 :(得分:1)

  1. 在.htaccess文件中设置一个错误文档,将每个404重定向到名为maybe redirection.php的文件。这个.php文件将处理“动态”重定向。

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

  3. 使用以下命令在apache配置中添加通配符serveralias: ServerAlias * .yourdomain.com

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

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

    这有点帮助吗?

答案 1 :(得分:0)

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

设置好通配符后,您只需查看&gt;

即可
 $_SERVER["SERVER_NAME"]

答案 2 :(得分:0)

单凭php无法实现。我不认为共享主机允许这样做。 无论如何,为了你必须拥有一个域(或有权编辑DNS记录),你可以添加通配符记录,以允许任何子域指向一台机器(由其IP地址标识)

编辑(来自Powerlord评论)

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

/编辑

然后在php中你可以通过解析(分割)$_SERVER['HOST_NAME']

来检查页面请求的子域名

例如:

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