添加Apache VirtualHost,localhost的DocumentRoot更改为VirtualHost的DocumentRoot

Posted

技术标签:

【中文标题】添加Apache VirtualHost,localhost的DocumentRoot更改为VirtualHost的DocumentRoot【英文标题】:Adding Apache VirtualHost, DocumentRoot of localhost changes to the VirtualHost's DocumentRoot 【发布时间】:2012-03-22 22:53:27 【问题描述】:

在我的 Windows 7 中一切正常。

问题是当我将 domain1.com 添加为 VirtualHost 时,localhost 的 DocumentRoot 会更改为 VirtualHost 的 DocumentRoot。

例如: 当我访问http://localhost 时,我为 domain1.com 指定的 DocumentRoot 被打开,而不是 httpd.conf 中指定的那个。

我的 httpd-vhosts.conf 文件是:

NameVirtualHost 127.0.0.1:80
NameVirtualHost domain1.com:80
<VirtualHost domain1.com:80>
<Directory "e:/program files/apache/htdocs/domain1.com">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName domain1.com
ServerAlias domain1.com
ScriptAlias /cgi-bin/ "e:/program files/apache/htdocs/domain1.com/cgi-bin/"
DocumentRoot "e:/program files/apache/htdocs/domain1.com"
ErrorLog "E:/Program Files/apache/logs/domain1.com.err"
CustomLog "E:/Program Files/apache/logs/domain1.com.log" combined
</VirtualHost>

我的主机文件:

127.0.0.1   domain1.com

我的 httpd.conf 文件:

DocumentRoot "e:/program files/apache/htdocs"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory "e:/program files/apache/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

我知道一种解决方案是添加 VirtualHost,ServerName 为 127.0.0.1 或 localhost,但我避免这样做。

我可以将 httpd.conf 中指定的 localhost 的 DocumentRoot 设为默认吗?

如果您需要更多信息,请告诉我。

谢谢, 吉格。

【问题讨论】:

【参考方案1】:

如https://httpd.apache.org/docs/2.2/vhosts/name-based.html中所述

"如果要向现有的 Web 服务器添加虚拟主机,还必须为现有主机创建一个 &lt;VirtualHost&gt; 块。此虚拟主机中包含的 ServerNameDocumentRoot 应与全局相同ServerNameDocumentRoot。首先在配置文件中列出这个虚拟主机,这样它将作为默认主机。"

【讨论】:

"此虚拟主机中包含的DocumentRoot 应与全局DocumentRoot 相同"。这不是真的。这完全取决于您的配置。例如,如果您设置Options Indexes FollowSymlinks,您可以将全局DocumentRoot 中的任何目录设置为vhost 的DocumentRoot

以上是关于添加Apache VirtualHost,localhost的DocumentRoot更改为VirtualHost的DocumentRoot的主要内容,如果未能解决你的问题,请参考以下文章

新端口上的 apache2 VirtualHost 不起作用

OSX Apache Virtualhost 仅返回默认页面

Apache Virtualhost 更喜欢新站点的“默认”服务器

Apache2指令通过VirtualHost容器与xampp冲突

apache虚拟主机配置

Nginx 虚拟主机 VirtualHost 配置