VirtualHost 文件都指向 Ubuntu 12.04 中的第一个 VirtualHost [关闭]

Posted

技术标签:

【中文标题】VirtualHost 文件都指向 Ubuntu 12.04 中的第一个 VirtualHost [关闭]【英文标题】:VirtualHost files all pointing to first VirtualHost in Ubuntu 12.04 [closed] 【发布时间】:2012-11-01 12:04:25 【问题描述】:

所以我设置了 2 个虚拟主机文件,example1.com 和 example2.com 并包含以下信息:

--第一个文件

<VirtualHost 127.0.0.1:80>
    ServerName  example1.com
    ServerAlias www.example1.com
    ServerAdmin admin@example1.com
    DocumentRoot    /var/www/example1.com
</VirtualHost>

--第二个文件

<VirtualHost 127.0.0.1:80>
    ServerName  example2.com
    ServerAlias www.example2.com
    ServerAdmin admin@example2.com
    DocumentRoot    /var/www/example2.com
</VirtualHost>

并设置我的主机文件以读取

127.0.0.1 locahost
127.0.0.1 example1.com
127.0.0.1 example2.com

但如果我尝试访问 localhost、example1.com 或 example2.com,我的浏览器只会将我发送到 example1.com

默认的虚拟主机文件有:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

我假设 /var/www 的 AllowOverride 优先于根目录,对吗?

所以后来我用 a2dissite 关闭了我所有的虚拟主机,并在 hosts 文件中注释掉了这些行,但我的一半网站现在根本无法运行。

我的一个 wordpress 网站似乎无法提取它的 css 文件,因此它全部被劫持(24 小时前还好),一些网站似乎失去了与数据库的连接。

我不知道发生了什么,但一切都被劫持了。

编辑 - 我最初的问题是两个虚拟主机文件都指向 example1.com,这是复制粘贴失败,实际文件指向合法的网站 URL

【问题讨论】:

能否请您也发布您的 apache 配置文件的相关部分?我认为如果未声明侦听器或未添加 vh 配置,它们可能会成为问题。 【参考方案1】:

在没有看到更多 apache 配置的情况下,我最好的猜测是你没有启用 name-based virtual hosting。为此,请在 Apache 配置中包含以下内容:

NameVirtualHost *:80

基于 IP 的虚拟主机是 Apache 在没有该指令的情况下使用的默认机制。

顺便说一句,如果你这样做,&lt;VirtualHost&gt; 块的参数必须与 NameVirtualHost 指令的参数匹配,所以请改用它:

<VirtualHost *:80>

如果您要在同一个盒子上处理许多不同的网站,您可能需要查看mod_vhost_alias 的文档。

【讨论】:

以上是关于VirtualHost 文件都指向 Ubuntu 12.04 中的第一个 VirtualHost [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 12.04 上的 Apache2 中配置 VirtualHost 的问题

VirtualHost 始终在 Ubuntu 14.04 上使用 Apache 返回默认主机

Apache virtualHost 忽略或指向默认的

VirtualHost 阻止 XAMPP 声明启动 Apache

IIS 相当于 Apache 中的 VirtualHost

Apache 2.4 VirtualHost Ubuntu 只允许访问本地网络