当我将以下行添加到时/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 目录中)