Apache:使用Include指令包含在vhost中的文件不评估vhost中定义的变量

时间:2014-10-15 01:18:21

标签: apache vhosts mod-alias

在谷歌和这里进行了大量搜索后,我无法找到解决问题的方法。

我使用这个article来学习如何在我的vhost中创建变量。它需要安装mod_define。

我的团队中有许多开发人员正在处理同一个项目,并且都需要将相同的设置应用于他们的虚拟主机。修改每个人的文件非常痛苦。所以我创建了一个名为 redirects.conf 的文件,并将其包含在每个人的虚拟主机中。此文件不需要知道每个vhost中定义的DEV_DIR变量,因此它可以正常工作。

示例Developer vhost:

<VirtualHost devenv:80>
    Define DEV_DIR developer-name

    DocumentRoot /export/www/development/${DEV_DIR}/myproject/
    ServerName pavan-myproject.dev.mydomain.co.nz

    Include /etc/httpd/conf/common/aliases.conf
    Include /etc/httpd/conf/common/rewrites.conf
</VirtualHost>

我已经包含(或尝试过)的 aliases.conf 文件需要知道并评估DEV_DIR变量的值。

别名文件包括:

 Alias /secure/assests  /export/www/development/${DEV_DIR}/myproject/assets/
 Alias /secure/shareddata /export/script/data/shareddata

包含此文件后,当我执行configtest时,出现此错误:

[error] mod_define: Variable 'DEV_DIR' not defined: file /etc/httpd/conf/common/aliases.conf, line 1

但是,当我不包含该文件并将别名直接放入vhost时,它会很好地评估DEV_DIR变量(我已尝试使用两种符号:$ {DEV_DIR}以及$ DEV_DIR并且两者都有效)。这样做仍然需要改变每个人的虚拟主机。我想用一个文件来管理它。

我想用VirtualHost范围定义变量,并在包含的文件中使用它们。

如何获取aliases.conf或其他任何包含文件来评估包含它的vhost中定义的变量?

我可以使用哪种其他解决方案来实现这样的功能?

如果在其他地方询问并回答了这个问题,你能帮助我或将我联系到解决方案吗?

0 个答案:

没有答案