如何让apache发送一个基于没有匹配的VirtualHost节(基于ServerName)被发现的404?

我正在重build一个旧的服务器。 五个旧站点中只有一个需要上线,五个旧站点都指向相同的IP地址。

不幸的是,无论何时通过自己的独特域名为旧网站提出请求,他们都会通过我试图实现的一个网站的页面。 我只想让旧的网站显示一个404而不是我实际上想要做的一个网站。

举个例子:

  • 网站1(192.168.0.1)[www.first.com]
  • 网站2(192.168.0.1)[www.second.com]
  • 网站3(192.168.0.1)[www.third.com]

我想再次移动站点1。 所以我打开了IP地址为192.168.0.1的机器上的apache,将站点1的所有文件都放在/ var / www目录中。 当我浏览到192.168.0.1或www.first.com我正确地看到网站1.当我浏览到www.second.com和www.third.com我也收到网站1这是问题。

如果没有www.first.com网站,有没有办法可以解决这个问题?

这是我的网站可用:

NameVirtualHost *:80 LogFormat "%h %l %u %t \"%r\" %>s %b" common <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files> <Directory /> Order Deny,Allow Deny from all Options None AllowOverride None Options None </Directory> <Directory /var/www> Order Allow,Deny Allow from all </Directory> <VirtualHost *:80> ServerName first.com ServerAlias www.first.com DocumentRoot /var/www ErrorLog /var/log/first.com.err CustomLog /var/log/first.com.log common </VirtualHost> <VirtualHost _default_:*> ServerName unknown DocumentRoot /var/www_404 </VirtualHost> 

没有匹配ServerNameServerAlias请求将由第一个块加载; 只需将你的404' VirtualHost移动到顶端(它的绑定应该与默认的默认值相匹配,所以把它设置为*:80 – 通配虚拟主机不会没有这个请求)。

对于默认的VirtualHost,请尝试以下(顶部,而不是底部):

 <VirtualHost _default_:*> DocumentRoot /var/www_404 </VirtualHost> 

否则,它将尝试search名为“未知”的服务器,如果你有它的底部;-)

或者,您可以在VirtualHost指令之外指定DocumentRoot来定义默认位置,如Apache文档中所述

编辑:关于放置的小调整