比方说,我有xy.com运行在由Apache支持的服务器上。 这是默认的虚拟主机。
现在有人重写了他的主机文件,将yz.comredirect到我的服务器的IP。 由于我的服务器不知道yz.com的一些事情,只是将它parsing为默认的虚拟主机。 所以在这种情况下,yz.com/hello得到解决xy.com/hello,它会尝试服务我的网站的/ hello页面。 有没有办法(也许用一个RewriteRule或者什么)来禁用从我的服务器请求yz.com的请求? 给他们一个403例如任何东西,只是不要让任何东西通过Apache,除非它是请求xy.com。
我在Ubuntu LTS上使用最新的Apache版本。
为什么xy.com是默认的,如果你不想要它?
添加一个新的默认虚拟主机,不做任何事情,但返回一个404。
然后将xy.com添加为虚拟主机条目。 它只会在需要的时候使用。
为什么不简单地将默认VHost更改为否定?
<VirtualHost *:80> ServerName lol.no DocumentRoot /var/empty/httpd <Location /> Deny from all Allow from none </Location> </VirtualHost> <VirtualHost *:80> ...your VHost goes here... </VirtualHost>
RewriteRule会是这样的:
RewriteCond %{HTTP_HOST} !^your\.site\.com$ [NC] RewriteRule .* - [F]
其他的解决scheme是添加一个新的默认虚拟主机,以403响应任何请求。
只有匹配的请求才会转到您的真实虚拟主机上。