php自动生成子域代码,使用.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容器:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值