Apache:VirtualHost *:80 - 不支持混合使用 NameVirtualHost 地址的 * 端口和非 * 端口

Apache:VirtualHost *:80 - 不支持混合使用 NameVirtualHost 地址的 * 端口和非 * 端口

当我将以下行添加到时/etc/apache2/apache2.conf,重新启动 Apache 后出现以下错误:

Include
/usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-vhosts.conf

[2010 年 6 月 14 日星期一 12:16:47] [错误] VirtualHost *:80 - 不支持将 * 端口和非 * 端口与 NameVirtualHost 地址混合,否则将导致未定义的结果 [2010 年 6 月 14 日星期一 12:16:47] [警告] NameVirtualHost *:80 没有 VirtualHosts

这是我的 httpd-vhosts.conf 文件:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.

<VirtualHost *:80>
   ServerName tirengarfio.com
   DocumentRoot /var/www/rs3

   <Directory /var/www/rs3>
      AllowOverride All
      Options MultiViews Indexes SymLinksIfOwnerMatch
      Allow from All
   </Directory>

   Alias /sf /var/www/rs3/lib/vendor/symfony/data/web/sf
   <Directory "/var/www/rs3/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
   </Directory>
</VirtualHost>

知道这是什么原因造成的吗?

答案1

您的 http.conf 中还有另一个 NameVirtualHost 条目导致了此问题。查找某个条目NameVirtualHost *:*,然后删除它应该可以消除该错误。

另外,顺便提一下,直接从示例文档中包含 httpd-vhosts.conf 可能不是一个好主意,因为根据权限,它可能不是特别安全。它也不位于其他人所期望的位置,尽管如果您是唯一管理服务器的人,那么问题就不那么严重了。

答案2

可能有另一个 VirtualHost 干扰了您尝试定义的 VirtualHost。可以在 sites-available、sites-enabled 或 apache2.conf 中定义它。VHost 定义应如下所示

NameVirtualHost *:80 
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

答案3

最好将配置文件复制到 /etc 目录中。无论如何,请搜索(见下文)任何 apache 配置文件中是否有另一个 virtualhost 指令。

grep -lir 虚拟主机 /etc/apache2

(我猜所有 apache 配置文件都在 /etc/apache2 目录中)

相关内容