使用.htaccess(PHP)动态创建子域

我希望创建一个系统,在注册时将在我的网站上为用户帐户区域创建一个子域.

例如johndoe.website.com

我认为这与.htaccess文件有关,可能会重定向到网站上的其他位置?我其实不知道.但任何启动我的信息将不胜感激.

创建注册区域不是问题 – 我已经做了很多次.我只是不确定从哪个子域开始.

解决方法:

快速破旧

>您需要在DNS服务器* .website.com上创建通配符域
>然后在您的vhost容器中,您还需要指定通配符* .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容器:

<VirtualHost *:80>
  ServerName server.example.org
  ServerAlias *.example.org
  UseCanonicalName Off
</VirtualHost>

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上有所描述.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...