Apache2:单独的“配置树”的基于条件的包含
Posted
技术标签:
【中文标题】Apache2:单独的“配置树”的基于条件的包含【英文标题】:Apache2: Conditional Based Include for Separate "Configuration Tree" 【发布时间】:2016-09-18 18:04:18 【问题描述】:我想模仿在 Linux 上启用站点的行为,但在 Windows 上使用 Xampp,我遇到了一些问题。我希望有人可以提供帮助。
在 Linux 上,可以将 phpINIDIR 指令放在特定的虚拟主机定义中,并使该值仅用于虚拟主机。这似乎可行,因为虚拟主机是不同的“配置树”,因此每个虚拟主机都可以有自己的 PHPINIDIR。
在默认的 Xampp 安装中有一个 conf/extra/httpd-vhosts.conf,我可以在其中添加我自己的虚拟主机定义,但这些都是一起加载的。因此它是“一个配置树”,当我尝试在每个不同的 vhost 定义中放置不同的 PHPINIDIR 指令时它会出错(因为该变量被视为多次定义)。
我一直在阅读有关 mod_vhost_alias 的文章,看看我是否可以进行条件包含。
例如根据主机名检查文件是否存在,如果存在则加载配置文件。如果没有,请加载一个默认值。
<IfModule vhost_alias_module>
<If "-f 'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf'">
Include "'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf'"
</If>
<Else>
Include "C:/dev/bin/apache/conf/vhosts/default.conf"
</Else>
</IfModule>
我不知道我的语法是否只是错误,或者 vhost_alias_module 是否仅适用于虚拟主机指令来设置变量,但在任何一种情况下都会出现上述错误:
httpd: Syntax error on line 503 of C:/dev/bin/xampp/apache/conf/httpd.conf: Syntax error on line 43 of C:/dev/bin/xampp/apache/conf/extra/httpd-vhosts.conf: Invalid Include path 'C:/dev/bin/xampp/apache/conf/vhosts/' . %0 . '/vhost.conf'
我不赞成这个特定的解决方案,我愿意接受建议。但是,我希望每个主机都有一个完整的唯一 vhost.conf 文件,因为我希望能够自定义的不仅仅是 PHPINIDIR。
【问题讨论】:
这有帮助吗? change php values per vhost 实际上,是的,这绝对可以帮助解决我的问题。 【参考方案1】:没有任何类似的东西会起作用。
配置文件名是无关紧要的,不管你在 N 个文件中有 1 个虚拟主机还是在 1 个文件中有 N 个虚拟主机都没有关系。可以在虚拟主机中指定指令,也可以不指定。
至于为什么你的方案不起作用:
mod_vhost_alias 的 %n 变量不适用于任何 Apache 其他指令,只有 mod_vhost_alias 提供的那些。
此外,
【讨论】:
【参考方案2】:Invalid Include path
对我来说,这看起来像是寡妇下的格式错误的路径:
不应该是……。比如C:\\dev\\bin\\...
或C:\dev\bin\...
取决于软件如何处理反斜杠?
【讨论】:
以上是关于Apache2:单独的“配置树”的基于条件的包含的主要内容,如果未能解决你的问题,请参考以下文章
使用 python、pandas 合并 2 个基于 3 个条件的单独 excel 文件