Apache忽略DocumentRoot

问题描述:

我正在尝试修改Apache中的虚拟主机的DocumentRoot。虚拟主机的DocumentRoot设置被忽略,而是使用整个DocumentRoot。Apache忽略DocumentRoot

在我的情况下,Apache不使用/ Applications/AMPPS/www/public作为根文件夹,而是使用/ Applications/AMPPS/www。

httpd.conf文件的相关部分如下所示。 有没有人看到问题?

# DocumentRoot: The directory out of which you will serve your 
# documents. By default, all requests are taken from this directory, but 
# symbolic links and aliases may be used to point to other locations. 
# 
DocumentRoot "/Applications/AMPPS/www" 

...snip... 

<VirtualHost 127.0.0.1:80> 
<Directory "/Applications/AMPPS/www"> 
Options FollowSymLinks Indexes 
AllowOverride All 
Order deny,allow 
allow from All 
</Directory> 
ServerName localhost 
ServerAlias localhost 127.0.0.1 
ScriptAlias /cgi-bin/ "/Applications/AMPPS/www/cgi-bin/" 
DocumentRoot "/Applications/AMPPS/www/public" 
ErrorLog "/Applications/AMPPS/apache/logs/error_log" 
CustomLog "/Applications/AMPPS/apache/logs/access.log" combined 
</VirtualHost> 

看来,VirtualHost没有被使用,这可以解释为什么从主服务器配置的DocumentRoot处于活动状态。您可能需要在VirtualHost区块之前添加NameVirtualHost。就像这样:

NameVirtualHost 127.0.0.1 
<VirtualHost 127.0.0.1:80> 
... 

而且彻底去除ServerAlias指令,因为你在那里没有做任何事情兼得entires。您不需要在那里复制本地主机,因为您将它作为ServerName并且它不接受IP地址。一个IP地址将被分配给它的第一个匹配的VirtualHost服务。

编号:NameVirtualHost Directive

了NameVirtualHost在Apache的2.4滴入所以我假设你是一个早期版本。从2.4开始就没有它。