【问题标题】:NameVirtualHost causes 404 for localhostNameVirtualHost 导致本地主机出现 404
【发布时间】: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?

【问题讨论】:

    标签: apache macos virtualhost


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 1970-01-01
      • 2016-11-28
      • 2014-01-22
      • 2018-10-06
      • 2013-08-14
      • 2013-07-22
      • 2018-06-27
      • 1970-01-01
      相关资源
      最近更新 更多