我怎样才能在Apache中设置catch-all虚拟主机?

我为我的网站使用专用的IP地址,最近我注意到有些人正在将他们的域名指向我的IP地址。 我需要设置通用虚拟主机来告诉Apache只处理在configuration文件中定义的域。 我想要其他不需要的域名来获得404错误。 我怎么能这样做? 还有一个问题 ! 我使用cPanel,并有许多Apacheconfiguration文件! 我应该编辑哪一个?

好几件事情。

1) ServerFault不支持CPanel问题,因为它们是非标准安装,可以回答您的问题,例如哪个Apache文件难以回答。 此外,这是一个专业的网站,预计一些经验。

2)你确定你不在共享主机上吗? 共享IP地址实际上是相当普遍的。 特别是在便宜的托pipe环境。 最简单的testing将是尝试这些域之一,看看他们是否工作,并返回不在您的网站上的内容。

3)如果你真的有一个专门的IP,那么我想不出为什么人们会这样做,除非意外? 似乎毫无意义的注册域名并指向错误的服务器。

4)为什么这是一个问题? 似乎是一个获得更多stream量的好机会! 也许在这种情况下添加一个redirect回到你的主站点,但不会发送404。

首先指定您自己的Vhost,然后使用ServerNameServerAlias指令来捕获所有其他请求。 然后指定默认的主机并将其指向一个空的目录或您希望他们看到的页面。

 <VirtualHost <DEDICATED_IP>:80> DocumentRoot "/path/to/some/dir" ServerName yourdomain.com #ServerAlias *.yourdomain.com # ... </VirtualHost> <VirtualHost <DEDICATED_IP>:80> # This will listen on the dedicated IP adresses too DocumentRoot "/path/to/empty/dir" ServerName <DEDICATED_IP> ServerAlias * RedirectMatch 404 "*" # ... </VirtualHost> 

http://httpd.apache.org/docs/2.4/vhosts/examples.html#mixed