如何在 apache 的 httpd.conf 文件中定义变量?

我想在 Apache 服务器的 httpd.conf配置文件中定义一个变量。

例如: 变量 static _ path = C:\codebase\snp_static

并且我想在需要的地方在 httpd.conf中使用这个变量(static _ path)。

请告诉我如何在 httpd.conf文件中定义一个变量?

105525 次浏览

如果只需要在 httpd.conf 中进行简单的变量替换,那么为运行 Apache 的用户定义一个普通的 shell 环境变量,然后使用 ${ ENVVAR }语法在 httpd.conf 文件中引用它,参见 阿帕奇文件

Http://httpd.conf/中,用: Define声明变量(最好在第一行)
语法 : Define variable-name variable-value

以这种方式:

#The line below creates the variable [static_path]
Define static_path C:/codebase/snp_static

以后可以像下面这样使用这个变量:

ServerRoot = ${static_path}
...
DocumentRoot = ${static_path}
...
<Directory ${static_path}>
...etc.

你甚至可以组合多个变量:

#Below, I am going to combine variables [server_space] and [static_path]
Define server_space c:/
Define static_path codebase/snp_static
...
ServerRoot = ${server_space}${static_path}
...
DocumentRoot = ${server_space}${static_path}
...
<Directory ${server_space}${static_path}>
...etc.

文档 : < a href = “ http://httpd.apache.org/docs/2.4/mod/core.html # Definition”rel = “ norefrer”> http://httpd.apache.org/docs/2.4/mod/core.html#define

Apache2.4我研究了它,下面是对我有效的方法。 并使用 httpd _ z.exe-t-D DUMP _ RUN _ CFG 进行测试

   RESULTS:::
ServerRoot: "C:/path/core/apache2"
Main DocumentRoot: "C:/path/apache/htdocs"
Main ErrorLog: "C:/path/core/apache2/logs/error.log"
Mutex rewrite-map: using_defaults
Mutex default: dir="C:/path/core/apache2/logs/" mechanism=default
PidFile: "C:/path/core/apache2/logs/httpd.pid"
Define: DUMP_RUN_CFG
Define: US_ROOTF=C:/path   **THIS IS THE ROOT PATH VARIABLE I JUST MADE**
Define: php54




#<IfDefine TEST>
#  Define servername test.example.com
#</IfDefine>
#<IfDefine !TEST>
#  Define servername www.example.com
#  Define SSL
#</IfDefine>
#DocumentRoot /var/www/${servername}/htdocs
<IfDefine US_ROOTF>
Define US_ROOTF C:/PATH   **The path i want the variable for**
</IfDefine>
<IfDefine !US_ROOTF>
Define US_ROOTF C:/PATH    **The path i want the variable for**
#  Define SSL
</IfDefine>
#DocumentRoot /var/www/${servername}/htdocs  OPTIONS ON HOW TO USE


EXAMPLE of use
ServerRoot = ${US_ROOTF}
<IfDefine php54>
LoadFile "${US_ROOTF}/core/php54/icudt53.dll"
PHPIniDir "${US_ROOTF}/core/php54/php_production.ini"

我被告知永远不要使用一个直接的硬路径,任何时候服务的东西,总是使用变量,以帮助保护您的系统。

我发现这是如此的真实。现在我终于知道如何为所有处理 Apache 的服务设置变量了。

希望对你也有帮助。

这个问题很晚才提出,但是最近遇到了这个问题,就这样解决了:

DEFINE path "C:\path/to the/directory"

然后像这样使用:

DocumentRoot ${ path } < 目录 ${路径} >

注意: 在路径使用后的驱动器号

如果您的 apache 项目没有采用我们添加到 bashrc 的系统环境变量, 我们可以直接将变量导出到 /etc/apache2/envars 文件

例如: export ADMIN = ‘ Bibin’