Apache2 - 根据子目录设置文档根目录
Apache2 - Set Document Root based on subdirectory
我有一个默认的虚拟主机。它被配置为在 /var/www/html
内监视文档根并且工作得很好。但我有一个问题。我在子目录中有多个站点,但我不知道如何为每个站点设置文档根目录。例如,/var/www/html/test
、/var/www/html/test2
等。当我包含来自 /var/www/html/test
的文件时,它会在 var/www/html
中搜索。例如,我包含 include_once '/core.php'
这样的文件,但出现错误 Failed opening required '/var/www/html/core.php'
,因为这里没有当前文件。是否可以为主虚拟主机中的每个目录设置文档根目录?谢谢!
我的主要虚拟主机配置:
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
AccessFileName .htaccess
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
此外,您可以说,我需要使用相对路径,但在某些方面这是不可能的,因为有时我会使用由其他人创建的现成网站。
Is it possible to set Document Root for each of directories inside
main Virtual Host?
简短的回答是否定的,你不能。每个虚拟主机 1 个文档根目录。为了理解这些东西是如何工作的,你需要理解什么是 directives context. Lets take as an example VirtualHost directive。正如我们从文档中看到的那样,它只有 1 个上下文,即服务器配置。服务器配置上下文告诉下一个:
directive may be used in the server
configuration files (e.g., httpd.conf), but not within any
VirtualHost or Directory containers. It is not allowed in
.htaccess files at all.
但是DoocumentRoot有两个上下文:服务器配置和虚拟主机。休息你自己想办法;)
有很多方法可以达到预期的效果
- Running several name-based web sites on a single IP address
- Running different sites on different ports
- Mixed port-based and ip-based virtual hosts
希望本回答对您有所帮助!
我有一个默认的虚拟主机。它被配置为在 /var/www/html
内监视文档根并且工作得很好。但我有一个问题。我在子目录中有多个站点,但我不知道如何为每个站点设置文档根目录。例如,/var/www/html/test
、/var/www/html/test2
等。当我包含来自 /var/www/html/test
的文件时,它会在 var/www/html
中搜索。例如,我包含 include_once '/core.php'
这样的文件,但出现错误 Failed opening required '/var/www/html/core.php'
,因为这里没有当前文件。是否可以为主虚拟主机中的每个目录设置文档根目录?谢谢!
我的主要虚拟主机配置:
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
AccessFileName .htaccess
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
此外,您可以说,我需要使用相对路径,但在某些方面这是不可能的,因为有时我会使用由其他人创建的现成网站。
Is it possible to set Document Root for each of directories inside main Virtual Host?
简短的回答是否定的,你不能。每个虚拟主机 1 个文档根目录。为了理解这些东西是如何工作的,你需要理解什么是 directives context. Lets take as an example VirtualHost directive。正如我们从文档中看到的那样,它只有 1 个上下文,即服务器配置。服务器配置上下文告诉下一个:
directive may be used in the server configuration files (e.g., httpd.conf), but not within any VirtualHost or Directory containers. It is not allowed in .htaccess files at all.
但是DoocumentRoot有两个上下文:服务器配置和虚拟主机。休息你自己想办法;)
有很多方法可以达到预期的效果
- Running several name-based web sites on a single IP address
- Running different sites on different ports
- Mixed port-based and ip-based virtual hosts
希望本回答对您有所帮助!