【发布时间】:2016-11-14 01:45:27
【问题描述】:
我有一个服务器,我想在其上运行多个通配符虚拟主机,以及它们自己的 modperl 环境。
每个虚拟主机都需要运行自己的启动脚本来定义自定义包含路径。
在正常的 vhost 配置中,我可以执行以下操作...
<VirtualHost *:80>
ServerName web1.myserver.com
Define ApplicationRoot /websites/web1
DocumentRoot ${ApplicationRoot}
PerlSetEnv PERL_DOC_ROOT ${ApplicationRoot}
PerlOptions +Parent
PerlPostConfigRequire /websites/lib/startup.pl
...
然后我的 startup.pl 脚本可以使用 PERL_DOC_ROOT 环境变量来动态配置自定义库路径。
这适用于多个虚拟主机部分。它们每个都定义了自己的@INC,并且一切都正确解析。
有什么方法可以将其转换为通配符虚拟主机配置。我希望用户能够访问 *.myserver.com,它将使用主机名来确定要使用的文档根目录,并将运行 startup.pl 以基于此文件夹定义 lib 路径。
我知道我可以使用这样的东西...
VirtualDocumentRoot /websites/%1/
动态设置文档根目录,但如果我尝试在任何其他声明中使用 %1,则无法理解。此外,startup.pl 需要在首次请求站点时运行,而不是在首次加载配置文件时运行。
这可能吗?或者我是否需要在每次添加新的虚拟目录时以某种方式动态重写配置文件。
【问题讨论】: