快速下载
>您需要在DNS服务器* .website.com上创建通配符域
>然后在您的vhost容器中,您将需要指定通配符aswell * .website.com – 这是在ServerAlias DOCs完成
>然后在PHP中提取和验证子域,并显示相应的数据
长版本
1.创建通配符DNS条目
在您的DNS设置中,您需要创建一个wildcard domain entry,例如* .example.org。通配符条目如下所示:
*.example.org. 3600 A 127.0.0.1
2.在vhost中包含通配符
接下来在Apache配置中,您需要设置一个vhost容器,以指定ServerAlias DOCs指令中的通配符。示例vhost容器:
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
3.找出您在PHP中使用的子域
然后在您的PHP脚本中,您可以通过查看$ _SERVER超级全局变量来找出该域。下面是在PHP中抓取子域的示例:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
我在这里使用正则表达式,以允许人们通过www.subdomain.example.org或subdomain.example.org访问您的网站。
如果你从来没有预料到处理www。 (或其他子域),那么你可以简单地使用一个子串,如:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
大规模虚拟主机
大规模虚拟主机是一个略有不同的方案,以上,你通常使用它托管许多不同的网站,而不是试图使用它强大的应用程序的问题提出。
我在post on my blog之前记录了我的mod_rewrite基于大规模虚拟主机环境,你可以看看,如果这是你想要的路线。还有,当然,respective Apache manual page。
Apache也有一个内部的方式来处理大规模的虚拟主机,这比我使用的mod_rewrite方法稍有弹性。这一切都在Apache Dynamically Configured Mass Virtual Hosting manual page上描述。