控制 Apache 缺省的虚拟主机

1. 引言

当你在一台服务器上用虚拟主机寄存多个网站,问题有时会出现,例如在主机设置值中打错字。所得出的结果也许是所需的内容被首台虚拟主机的内容所取代。由於站主可能会很气忿,这种情况并不理想。显示一个通用的页面会较可取。

2. 问题

当 Apache 为每个请求寻找适合的虚拟主机时,它会按主机被定义的次序逐一检查。假如到了清单的底部仍没有配对,它便会采用首台虚拟主机。

3. 解决方法

新增一台百搭的虚拟主机,让它替换首台主机。

4. 利用 httpd.conf 创建虚拟主机

/etc/httpd/conf/httpd.conf 文件的底部加入一个虚拟主机的定义是插入虚拟主机的最明显一个做法。

加插首台主机时,请在 NameVirtualHost:80 这一行之后,并在其它虚拟主机的定义之先放入定义。

在底部加入百搭的虚拟主机时,请确定它以下没有其它主机的定义,因为这些都不会生效。

5. 采用虚拟主机档

第二个将虚拟主机新增到 Apache 设置的方法,就是利用虚拟主机档。这个方法在 ApacheVhostDir 里有更详细描述。

新增首台主机时,请将文件命名为一个於目录清单中会首先出现的文件名,例如 0Default.conf

新增百搭的虚拟主机时,请将文件命名为一个永远显示於最尾的机名,例如 zDefault.conf

6. 首台虚拟主机

作为首台虚拟主机,ServerName 应该是一个实际上不被采用的特定名称。最简单的话可以是:

<VirtualHost *:80>
  ServerName fail
</VirtualHost>

7. 最后一台虚拟主机

作为一台百搭的虚拟主机,它应该能配对所有名称。你可以这样做:

<VirtualHost *:80>
  ServerAlias *
</VirtualHost>

8. 重新引导 Apache

要让你的改动生效,请重新引导 Apache。

service httpd graceful


这页的英文版本由 Ed Heron 创建。

Translation of revision 9

zh/TipsAndTricks/ApacheVhostDefault (last edited 2010-01-18 04:13:54 by TimothyLee)