如何使用虚拟主机将动态子域提供给位于 docroot 中的文件夹

Posted

技术标签:

【中文标题】如何使用虚拟主机将动态子域提供给位于 docroot 中的文件夹【英文标题】:How to serve dynamic subdomains to a folder located within docroot using vhosts 【发布时间】:2019-12-19 15:17:50 【问题描述】:

我已尝试通过 .htaccess 使用 Mod Rewrite 来解决此问题,但无济于事。

所以我会问是否可以通过 Vhosts 完成。

这是使用 Apache 的 CentOS7。

我有一个域,叫它 mydomain.com。它位于(docroot)中

用户是在名为 Users 的 (docroot) 文件夹中动态创建的。因此,例如,用户 'xxx' 将位于文件夹 (docroot)/Users/xxx 中,而用户 'yyy' 将位于 (docroot)/yyy 文件夹中,如此......

到目前为止,我正在尝试做的事情是找到一种方法将子域流量引导到 xxx.mydomain.com 并提供 (docroot)/Users/xxx 或 yyy.mydomain.com 的内容服务 (docroot)/Users/yyy 等。

相比之下,如果我将访问 mydomain.com 的流量仅定向到 (docroot)

所以 mydomain.com 指向 /var/www/html 并且 xxx.mydomain.com 应该指向 /var/www/html/Users/xxx

问题是,如果我使用 .htaccess,它想将 xxx.mydomain.com 更改为 mydomain.com/Users/subdomain。这不是我要找的。​​p>

它需要保留 xxx.mydomain.com ,所以不重写 url ,同时提供相应的目录,即 /var/www/html/Users/xxx

任何帮助将不胜感激。可以给出任何澄清

我已尝试将 .htaccess 文件修改为没有结束

到目前为止,我已经尝试将此作为我的 conf 文件,但没有结束。

<VirtualHost *:80>

ServerName dev.mydomain.com
ServerAlias dev.mydomain.com
DocumentRoot /var/www/html/mydocroot

</VirtualHost>

<VirtualHost *.80>

ServerAlias *.dev.mydomain.com
VirtualDocumentRoot /var/www/html/mydocroot/Users/%0

</VirtualHost>

我很好奇我做错了什么

【问题讨论】:

Virtualhost For Wildcard Subdomain and Static Subdomain的可能重复 特别检查这个答案,***.com/a/48893687/10283047——我认为你应该在那里使用%1,而不是%0 我自己解决了问题。但是谢谢它确实有帮助 【参考方案1】:

我已经解决了我自己的问题。对于那些想知道的人:

<VirtualHost *:80>

    ServerName dev.mydomain.com
    ServerAlias dev.mydomain.com
    DocumentRoot /var/www/html/docroot

</VirtualHost>

<VirtualHost *:80>

ServerAlias *.dev.mydomain.com
VirtualDocumentRoot /var/www/html/docroot/Users/%1

</VirtualHost>

【讨论】:

以上是关于如何使用虚拟主机将动态子域提供给位于 docroot 中的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 读取服务器上任何动态子域的内部 index.php

使用 Express 和 Node,如何跨子域/主机头维护会话

使用 WordPress 多站点创建子域时自动更新 Windows 8 主机文件

如何为除 localhost 之外的所有域提供动态虚拟主机

如何为除 localhost 之外的所有域提供动态虚拟主机

如何在我的本地主机上创建子域? [关闭]