您可以相对于 conf 文件设置 Apache 的 DocumentRoot 吗?

Posted

技术标签:

【中文标题】您可以相对于 conf 文件设置 Apache 的 DocumentRoot 吗?【英文标题】:Can you set Apache's DocumentRoot relative to the conf file? 【发布时间】:2015-03-22 01:44:33 【问题描述】:

设置apache2虚拟主机时,是否可以在.conf文件中引用.conf文件的路径?

如果我有这样的目录结构:

root/conf/vhost.conf
root/log/error.log
root/public/

我可以这样做吗:

<VirtualHost *:80>
  ...

  DocumentRoot $THIS_CONF_FILE_PATH/../public
  ErrorLog  $THIS_CONF_FILE_PATH/../log/error.log

  ...
</VirtualHost>

【问题讨论】:

【参考方案1】:

当然你可以这样做,但为了简单起见,你应该将 ServerRoot 指令设置为你的根目录。例如,这样的东西看起来会更干净:

ServerRoot /path/to/root    
Include conf/*.conf
...

您的 vhost.conf 文件可能如下所示:

<VirtualHost *:80>
  ...

  DocumentRoot public
  ErrorLog log/error.log

  ...
</VirtualHost>

【讨论】:

感谢您的提示。我应该备份一下并提到我正在尝试实现以下目标:vhost1/conf/vhost.conf vhost1/log/error.log vhost1/public/vhost2/conf/vhost.conf vhost3/log/error.log vhost4/public/ 我相信 ServerRoot 只能设置一次,这并不能真正让我按照我的计划去做。提醒我我正在做一些非正统的事情绝对有用。 我想我理解你想要完成的事情。我相信您应该能够使用这样的语法来包含配置文件 Include /conf/.conf,但我没有看到硬编码虚拟主机 DocumentRoot 和错误路径有任何问题。你必须对 ServerName 和 ServerAlias 指令做同样的事情,所以为什么不重用字符串呢。

以上是关于您可以相对于 conf 文件设置 Apache 的 DocumentRoot 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Apache的配置httpd.conf文件配置

各种服务器伪静态配置方法

如何使Drupal链接相对

apache配置

apache配置

linux安装apache怎样才会有conf下的extra等文件夹