在PHP中以编程方式创建子域

问题描述:

我在一个共享的托管和一个添加域。在PHP中以编程方式创建子域

我需要为我的网站的每个用户创建子域名,如果用户名是jeff,那么他应该有一个网址jeff.mydomain.com。

如何使用PHP以编程方式创建它?

感谢 Prady

+2

哇!你的操作系统怎么样?你是否安装了“绑定”,你有权访问它并修改区域?你使用什么网络服务器?你有写权限的配置? ... – 2010-09-29 03:43:35

这有两个部分。首先,您需要设置一个wildcard dns entry

一旦你有了这个设置,你应该把所有请求都指向一个域。从那里你可以使用PHP来找出你目前在哪个域名:

$domain = $_SERVER['HTTP_HOST']; 
$base = 'mydomain.com'; 
$user = substr($domain, 0, -(strlen($base)+1));// the user part of the domain 
if(!empty($user)) { 
    $user = sanatiseUser($user); 
    require_once $user.'.php'; 
} 
+0

我建议在'substr'上使用'explode(“。”,$ _SERVER ['HTTP_HOST'])''。这样可以更好地处理域名与预期不符(可能发生)的情况。 – 2010-09-29 03:50:13

+0

当我创建通配符DNS条目我可以使它指向特定的文件夹中的站点下还是应该指出的站点的根目录仅 – Prady 2010-09-29 04:00:43

+0

@Prady通配符将指向服务器,而不是一个特定的目录。你可以配置你的Web服务器在另一个目录指向特定的主机,或者你可以让PHP脚本(作为控制器)来处理所有的请求,并决定它们应该如何处理。 – 2010-09-29 04:19:31

您需要设置Apache监听用于进入特定的IP的所有域。

然后,您需要设置通配符DNS条目,将*.domain.com指向该IP。

然后在您的应用程序中,使用$_SERVER['HTTP_HOST']来确定要加载哪个用户。