4

所以我设置了 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 关闭了我所有的虚拟主机,并在主机文件中注释掉了这些行,但我的一半网站现在根本无法工作。

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

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

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

4

1 回答 1

6

在没有看到更多 apache 配置的情况下,我最好的猜测是您没有启用基于名称的虚拟主机。为此,请在 Apache 配置中包含以下内容:

NameVirtualHost *:80

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

顺便说一句,如果你这样做,<VirtualHost>blocks 的参数必须与NameVirtualHost指令的参数匹配,所以请改用它:

<VirtualHost *:80>

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

于 2012-11-21T18:41:11.007 回答