我想要做的是根据用户名和子文件夹动态创建虚拟主机,例如如果我要创建以下文件夹:
/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