为了账号安全,请及时绑定邮箱和手机立即绑定

根据用户名使用 htaccess 动态创建子域

根据用户名使用 htaccess 动态创建子域

PHP
蝴蝶刀刀 2022-08-19 15:45:49
我有一个问题,我需要知道如何动态创建子域。http://example.com/user.php?id=ajithjojo我希望它像这样工作 http://ajithjojo.example.com/这怎么可能。我检查了所有StackOverflow讨论,但我没有得到我需要的正确答案
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您要么需要实现一些逻辑来将虚拟主机添加到apache http服务器(复杂且可疑),要么使用默认主机(响应现有虚拟主机处理的所有传入请求的主机)并在该主机中实现内部重写规则。这允许您简单地分发对此类“子域”(实际上是主机名)的引用。

这些重写规则可能如下所示:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRUle ^ %{REQUEST_URI}?user=%1 [END]

显然,您需要根据实际设置进行调整,但它应该为您指明正确的方向。例如,您可以使用评估所请求主机的实现,而不是依赖于特定的 http get 参数,如上所示。但这些都是您必须自己决定的实现细节。

如果您使用上述规则收到内部服务器错误(http状态500),那么您很可能操作的是一个非常旧版本的apache http服务器。在这种情况下,您将在 http 服务器错误日志文件中看到不受支持的标志的明确提示。您可以尝试升级或使用较旧的标志,在这种情况下,它可能具有相同的工作方式,尽管这有点取决于您的设置。[END][L]

此实现同样适用于 http 服务器主机配置或动态配置文件(“.htaccess”文件)中。显然,重写模块需要加载到 http 服务器内部并在 http 主机中启用。如果您使用动态配置文件,则需要注意在主机配置中完全启用了它的解释,并且它位于主机的文件夹中。DOCUMENT_ROOT

一般评论:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是意外行为的原因,难以调试,并且它们确实会降低http服务器的速度。它们仅作为最后一个选项提供,用于您无法访问真正的http服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。


查看完整回答
反对 回复 2022-08-19
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

这与htaccess无关。您可以设置 Web 服务器,以便 *.example.com 指向特定的公共根目录。在该公共根中,驻留着一个php脚本,该脚本检查数据库以查看主机/用户名是否应该存在。

因此,您的第一个 URL 会在数据库中创建一条记录,指出该记录存在。然后,在访问第二个 URL 时,脚本会看到域存在,然后执行动态操作。ajithjojo

如果它不存在,脚本将引发 404 标头,或重定向到某个位置。


查看完整回答
反对 回复 2022-08-19
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信