我希望创建一个系统,在注册时将在我的网站上为用户帐户区域创建一个子域.
例如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容器:
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上有所描述.
标签:htaccess,php,dns,virtualhost,subdomain
来源: https://codeday.me/bug/20190911/1803317.html