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在Apache的2.4滴入所以我假设你是一个早期版本。从2.4开始就没有它。