NameVirtualHost 导致本地主机出现 404
Posted
技术标签:
【中文标题】NameVirtualHost 导致本地主机出现 404【英文标题】:NameVirtualHost causes 404 for localhost 【发布时间】:2011-07-07 19:27:18 【问题描述】:我已经通过启用 NameVirtualHost 成功设置了多个 VirtualHost。这是我的 vhosts.conf 的顶部
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.local
...
</VirtualHost>
问题是当我访问http://localhost
时,我得到默认的“它可以工作!”。如果我去http://127.0.0.1/
它默认为http://mysite.local
我从 Apache Docs 了解到为什么它默认为 mysite.local(匹配第一个 VirtualHost)。但是我以前可以去http://localhost/phpmyadmin/
。
我怎样才能找回它?我需要制作我的第一个 VirtualHost 本地主机吗?好像不对……
在 Mac OS X (10.6.6) 上运行 apache 2.2.15。
更新
如果我从我的 hosts 文件中注释掉以下行,则 localhost 和 127.0.0.1 都会转到同一个地方。我在访问日志中验证它确实在使用 ::1。
::1 localhost
fe80::1%lo0 localhost
所以我想这可以解决第一个问题,前提是这样可以吗?但是如何让 localhost 转到我的默认 DocumentRoot?
【问题讨论】:
【参考方案1】:不,您不能将 VirtualHosts 与“经典”配置混合使用。 您可以在另一个端口上侦听并定义另一个 VirtualHost(例如 *:8080)“模拟”您之前的“localhost”进入您的一般 DocumentRoot 声明。
类似这样的:
Listen 80 (already declared elsewhere)
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080
<VirtualHost *:80>
ServerName mysite.local
...
</VirtualHost>
<VirtualHost *:8080>
ServerName localhost
DocumentRoot /same/as/the/classic/one/
...
</VirtualHost>
您还可以声明一些别名 /phpmyadmin/ 这将是全局的,但我不推荐使用别名,因为您的虚拟主机中不能有另一个 phpmyadmin 文件夹。
你当然可以定义一个 phpmyadmin.local vhost ;-)
【讨论】:
我想最后我只是想确保我的设置没有破坏任何东西。正如你所说,似乎没有办法混合。在我有几个 utility 应用程序(如 phpmyadmin 等)作为我的一般文档根目录中的子目录之前。所以我只需要把它们放在其他地方,作为另一个端口下的 localhost,或者为每个端口创建特定的虚拟主机? 对我来说,最好的方法是为每个实用程序应用创建一个虚拟主机。您可能想要使用 clickontyler.com/virtualhostx ;-)【参考方案2】:我怎样才能找回它?我需要制作我的第一个 VirtualHost 本地主机吗?好像不对……
我就是这样做的,一切似乎都工作得很好,不需要额外的端口来监听。
第一个 VirtualHost 块 处理任何不指向我设置的 2 个虚拟主机(第 2 和第 3 个 VirtualHost 块)之一的 URL:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/"
ServerName localhost
ServerAlias localhost
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/"
ServerName imputation.loc
<Directory "/Applications/XAMPP/xamppfiles/htdocs/imputation/dirmaster/http/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/"
ServerName documentatiebestand.loc
<Directory "/Applications/XAMPP/xamppfiles/htdocs/documentatiebestand/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
【讨论】:
以上是关于NameVirtualHost 导致本地主机出现 404的主要内容,如果未能解决你的问题,请参考以下文章