使用 Apache 的 VirtualHost 根据文件夹结构动态配置子域

使用 Apache 的 VirtualHost 根据文件夹结构动态配置子域

我想要做的是根据用户名和子文件夹动态创建虚拟主机,例如如果我要创建以下文件夹:

/home/USER/www/PROJECT_FOLDER

以下域名将映射到上一个文件夹作为其 webroot

http://PROJECT_FOLDER.USER.domain.com

除了创建一个检查新文件夹的脚本、在 Apache 配置中创建匹配的 VirtualHost 并重新启动 HTTPD 之外,是否有一种配置友好的方法来实现此目的?

-- 编辑 -- 感谢 @kashani 建议使用 mod_vhost_alias。效果非常好。

答案1

您可能需要研究一下 mod_vhost_alias。http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

尽管我还没有测试过,但您情况下的配置应该是这样的。

VirtualDocumentRoot /home/%2/www/%1 

并用于记录

LogFormat "%V %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" dynamic_vhosts
CustomLog logs/access_log dynamic_vhosts

这会将请求进入的虚拟主机放在每个日志条目的前面。您可以调整其余设置以匹配您的需要。如果 %V 不起作用,请尝试 %v。我不相信至少使用标准 Apache mod_log 可以将日志文件拆分成单独的日志文件。

答案2

使用“ServerAlias *.example.com”和虚拟用户主机 RewriteRule 示例,我相信您可以轻松地设置 apache 来执行您希望的操作

http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html#uservhosts

相关内容