当前位置: 首页 > 面试题库 >

使用.htaccess(PHP)即时创建子域

孟征
2023-03-14
问题内容

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

例如johndoe.website.com

我认为这可能与.htaccess文件有关,并且可能重定向到网站上的其他位置吗?我真的不知道 但是,任何使我动手的信息将不胜感激。

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


问题答案:

快速淘汰

  1. 您需要在DNS服务器* .website.com上创建通配符域
  2. 然后在您的vhost容器中,您还需要指定通配符* .website.com-在DOC中完成ServerAlias
  3. 然后提取并验证PHP中的子域并显示适当的数据

长版

1.创建一个通配符DNS条目

在DNS设置中,您需要创建一个通配符域条目,例如*.example.org。通配符条目如下所示:

*.example.org.   3600  A  127.0.0.1

2.在vhost中包含通配符

接下来,在Apache配置中,您需要设置一个虚拟主机容器,该容器在ServerAlias
DOCs
指令中指定通配符。示例虚拟主机容器:

<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'], '.')
             );

大规模虚拟主机

大规模虚拟主机与上述方案略有不同,因为您通常会使用它来托管许多不同的网站,而不是像问题所建议的那样尝试使用它为应用程序提供动力。

Apache还具有内部处理海量虚拟主机的方式,该方式比我使用的mod_rewrite方法的灵活性稍差。在Apache
动态配置的批量虚拟主机手册页上对此进行了全部描述。



 类似资料:
  • 问题内容: .htaccess我很难受。我想为我正在工作的网站创建友好的URL。 基本上我想将其转换为: 变成这个: 如果以后需要,我也想知道如何将文章标题添加到URL的末尾(如下所示)(我正在使用PHP): 注意:Stackoverflow方法对我也有好处,例如,此问题的网址为: 但是您可以在id后面放任何东西,它也可以工作。像这样: 我使用了一些自动Web工具来创建.htacces文件,但该文

  • 问题内容: 这是我的.htaac​​cess代码。 我需要网站的干净URL。我参考了许多教程和论坛,并创建了上面的代码。但是无法正常工作。几乎我正在与代码作斗争。我不太清楚干净的URL概念。我要在我的php页面上编写任何编码吗? 我在index.php文件中有此链接。 我想要同时点击链接泰坦尼克号。 我也想通过$ _ [request]获得值。 我到底要做什么。请不要重复提出这个问题,我已经搜索了

  • 我有一个日期存储在DB字符串格式ddMMyyyy和hh: mm和时区。我想根据这些信息创建一个即时,但我不知道如何做到这一点。 像这样的东西

  • 问题内容: 假设我想使以下内容可重复使用: 我可能会做这样的事情: 使用字符串文字,这很容易。但是,如果我想对正则表达式更加棘手,该怎么办?例如,说我要替换, 而是 。本能地,我会尝试通过以下方式扩展上述内容: 这似乎不起作用。我的猜测是它认为是字符串文字,而不是代表字符串的变量。是否可以使用字符串变量即时创建JavaScript正则表达式?如果可能的话,这样的事情会很棒: 问题答案: 还有哪里是

  • 问题内容: 我正在创建我的第一个API,如果向其传递两个值,则应该以JSON格式获取响应。该数字将由POST作为参数传递。使用cURL或任何可用的POST方法。 即使这是非常基础的,我也想知道最佳实践,并且应该基于模型控制器来创建API。不只是普通的PHP。 我已经搜索了许多REST API教程。他们很好,我对此有所了解。 但是,我想获得一个代码示例模型,以便我可以引用它并构建自己的代码,当然,该

  • 非常新的Laravel在这里,我很抱歉,如果问题是愚蠢的。我试图创建新的表,但得到这个错误 [PDOException]SQLSTATE[42S02]:找不到基表或视图:1146表“vvas.buildings”不存在 这是我的种子