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

2023-11-24

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

e.g. johndoe.website.example

我认为这与.htaccess文件并可能重定向到网站上的另一个位置?我其实不知道。但任何能让我开始的信息将不胜感激。

创建一个注册区域不是问题——我已经做过很多次了。我只是不确定从哪里开始子域。


快速总结

  1. 您需要在 DNS 服务器上创建通配符域*.website.example
  2. Then in your vhost container you will need to specify the wildcard as well *.website.example - This is done in the ServerAlias DOCs
  3. 然后在PHP中提取并验证子域并显示相应的数据

长版

1. 创建通配符 DNS 条目

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

*.example.org.   3600  A  127.0.0.1

2. 在vhost中包含通配符

Next up in the Apache configuration you need to set up a vhost container that specifies the wildcard in the ServerAlias DOCs directive. An example vhost container:

<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 or subdomain.example.org.

如果您从未预料到必须处理 www. (或其他子域)那么您可以简单地使用子字符串,如下所示:

$subdomain = substr(
                 $_SERVER['SERVER_NAME'], 0,
                 strpos($_SERVER['SERVER_NAME'], '.')
             );

海量虚拟主机

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

我之前已经记录了基于 mod_rewrite 的海量虚拟主机环境在我的博客上发帖,如果这是您想要走的路线,您可以查看该路线。当然,还有各自的 Apache 手册页.

Apache 还有一种处理大规模虚拟主机的内部方法,该方法比我使用的 mod_rewrite 方法稍微不太灵活。 Apache 上对此都有描述动态配置的海量虚拟主机手册页.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .htaccess (PHP) 动态创建子域 的相关文章

随机推荐

  • 如何在 bash 中在一行中运行多个后台命令?

    我通常运行多个命令 如下所示 sleep 2 sleep 3 or sleep 2 sleep 3 但是如果我想从一个命令行命令在后台运行它们怎么办 sleep 2 sleep 3 不起作用 更换也不行 with 有办法做到吗 您究竟希望他
  • 需要动态设置quartz cron表达式

    我在我的Web应用程序 Servlet Web应用程序 中使用quartz 下面是quartz property文件和quartz job xml的快照 石英性能 Configure the Job Initialization Plugi
  • .*(点星)如何工作? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我已经明白了 表示任何字符的零个或多个 但是 有人可以解释一下如何 在接下来的工作中又会
  • 允许“Enter”键按下提交按钮,而不是仅使用 MouseClick

    我现在正在学习 Swing 课程以及与之相关的一切 我已经编写了一个玩具程序 它会提示输入名称 然后显示一个带有消息 您已输入 您的名字 的 JOptionPane 我使用的提交按钮只能单击 但我也想让它与 Enter 按钮一起使用 我尝试
  • 在条件评估期间如何从查询返回布尔值?

    我需要这样的东西 select len someLongTextColumn 0 as isEmpty 上面的方法不行 有什么替代方案吗 如果转换为位 那么大多数客户端代码可以直接将其读取为布尔值 SQL Server没有布尔类型 SELE
  • SQL Server DRI(ON DELETE CASCADE)慢吗?

    我一直在分析我们的一个系统中与特别慢的删除操作相关的反复出现的 错误报告 性能问题 长话短说 看来CASCADE DELETE钥匙在很大程度上负有责任 我想知道 a 这是否有意义 以及 b 为什么会这样 我们有一个小部件的模式 这些小部件位
  • 增强精神3在哪里?是被遗弃了吗?

    我找不到boost Spirit 3的任何下载 好像12月底官网就不说了 它去哪儿了 源代码可在Github 文档是here 引用自Blog C Now 2015 今天是 Spirit X3 的正式发布 又名 Spirit 3 0 0 X3
  • 操作栏菜单显示在屏幕外

    我有一个带有旧式菜单的应用程序 将主题更改为 Holo 并将目标 SDK 版本切换为 14 后 软菜单按钮消失了 没关系 但使用操作栏上的菜单按钮会显示文本菜单大部分在屏幕外 如所附图片所示 您有什么想法如何解决这个问题吗 我已经解决了这个
  • 如何在没有服务或线程预览的情况下进行相机捕获?

    是否可以在不显示相机预览的情况下捕获图像 我有一个要求 我应该能够从线程或服务捕获图像 而不干扰前台应用程序 因为我不想显示相机预览 但我仍然想捕获背景图像并将其存储在设备中 试试这个代码 活动启动时它将单击图片 它有预览 但预览大小设置为
  • 房间:在查询中使用变量

    我在我的应用程序中使用 Room DB 并且希望在查询中将列名称作为变量 以便我可以 随时随地 操作它 在调用方法时 示例代码 name 假设是代表一列的变量 Query UPDATE Products SET name value WHE
  • 如何让 Pip 尊重要求?

    如果我使用创建 setup pyrequires Pip 没有安装我的依赖项 这是我的 setup py from distutils core import setup setup name my project description
  • 将 Cocos2D 与 UIKit 集成

    我环顾四周 发现关于如何将 cocos2d 与 UIKit 集成的材料非常少 注意 不是相反 我的意思是 例如 在 UIView 中添加一个 cocos sprite 动画 该动画放置在分割视图控制器内 作为子视图 我怎样才能做到这一点 我
  • 为什么我使用JavascriptinnerHTML调用图片时不显示?

    我对 Javascript 还很陌生 我正在尝试一些东西 我正在使用一个函数来使用innerHTML 在表格内加载图像 但是图像不会显示 除非我在函数底部调用alert whatever 然后在警报可见时它会显示 我正在使用的代码类似于 该
  • 此异步 getter 变量在 DART 中如何工作

    我在颤振中遇到了这些代码 static Future
  • 如何使用javascript上传文件?

    我想用js创建一个上传器 谁能帮我如何使用 javascript 上传文件 您可以像这样使用 html5 文件类型
  • 如何将子窗口的客户区保存到位图文件中?

    我使用核心 WIN32 和 VC 创建了一个 Windows 应用程序 在我的父窗口中 我有一个子窗口和两个按钮 保存 和 发送 当用户单击 保存 按钮时 我想要savefileDialog要打开 用户应该能够将图像保存为位图文件 应该使用
  • Blazor - 更改 DI 服务的属性后,剃须刀页面不会更新

    使用 dotnet 3 1 100 preview2 014569 好的 考虑下面的例子 从模板创建一个新的 Blazor WebAssembly 项目 然后添加以下内容 books razor page books inject Book
  • IDE可以智能感知protobuf-python成员

    我想要在 python 中生成 protobuf 类的智能感知 但生成的protobuf类的实现比较特殊 代码如下 class X message Message metaclass reflection GeneratedProtocol
  • React:按钮 onClick 函数在页面加载时运行,但您没有单击它

    我正在使用 ReactStrap 中的 ButtonGroup 和 Button 当您单击其中一个按钮时 我设置了一个 onClick 函数 lt ButtonGroup gt
  • 使用 .htaccess (PHP) 动态创建子域

    我希望创建一个系统 在注册时将在我的网站上为用户帐户区域创建一个子域 e g johndoe website example 我认为这与 htaccess文件并可能重定向到网站上的另一个位置 我其实不知道 但任何能让我开始的信息将不胜感激