NameVirtualHost导致404为localhost

时间:2011-03-03 05:16:19

标签: apache macos virtualhost

我设法通过启用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?

2 个答案:

答案 0 :(得分:3)

  
    

我怎样才能得到这个?我是否需要制作我的第一个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>

答案 1 :(得分:2)

不,您不能将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>

你也可以声明一些Alias / phpmyadmin /这是全局的我不建议使用别名,因为你的一个vhosts中没有另一个phpmyadmin文件夹。

你当然可以定义一个phpmyadmin.local vhost; - )