Apache2:基于条件的包含用于单独的"配置树"

时间:2016-05-21 14:32:04

标签: windows configuration xampp apache2 virtualhost

我想模仿Linux上启用网站的行为,但是在Windows上使用Xampp,我遇到了一些问题。我希望有人可以提供帮助。

在Linux上,可以将PHPINIDIR指令放在特定的虚拟主机定义中,并将该值仅用于虚拟主机。这似乎有效,因为虚拟主机是一个不同的配置树"因此每个虚拟主机都有自己的PHPINIDIR。

在默认的Xampp安装中有一个conf / extra / httpd-vhosts.conf,我可以在其中添加自己的虚拟主机定义,但这些都是一起加载的。因此,它是一个配置树",当我尝试在每个不同的vhost定义中放置不同的PHPINIDIR指令时,它会出错(因为该变量被定义为多次定义)。

我一直在阅读mod_vhost_alias以了解我是否可以执行条件包含。

e.g。根据主机名检查文件是否存在,如果是,则加载配置文件。如果没有,请加载默认值。

<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。

2 个答案:

答案 0 :(得分:0)

没有类似的东西可行。

配置文件名无关紧要,如果N个文件中有1个vhost或1个文件中有N个vhost,则无关紧要。可以在虚拟主机中指定指令。

至于为什么你的计划不起作用:

mod_vhost_alias'es%n个变量不可用于任何Apache其他指令,只是mod_vhost_alias提供的指令。

此外,&lt; If 并且在请求处理时解释与mod_vhost_alias相关的任何内容,而在读取配置文件时会处理包含

答案 1 :(得分:0)

Invalid Include path对我而言,它看起来像寡妇下的错误路径: 不应该是......比如C:\\dev\\bin\\...C:\dev\bin\...,具体取决于软件如何处理反斜杠?