我的 conf 文件中有NameVirtualHost *:80
inports.conf
和VirtualHost
who has ServerName www.mysite.com
。我还有几个子域映射到其他 VirtualHosts。
目前,如果我mysite.com
使用某个未在我的配置文件中配置为子域的任意子域进行访问,它会重定向到带有 的子域www.
。例如,如果我尝试,nowhere.mysite.com
它会转到www.mysite.com
。
我不认为这是网站上的正常行为。我如何才能忽略所有未发送到任何正确域的请求?
答案1
首先,这些名称完全解析,而不是向用户发出名称解析错误,这意味着您在 DNS 区域中配置了通配符 ( *.mysite.com.
)。如果您希望查找虚假子域失败,请将其删除。
在基于名称的虚拟主机上,在地址:端口组合上加载的第一个虚拟主机被视为默认虚拟主机,并处理所有未配置的主机名请求。您可以使用 了解这对您的安装有何影响apachectl -S
。
Apache 永远不会发送重定向30x
响应,将用户置于不同的域名上,除非它已配置为这样做 - 您看到的重定向行为要么是明确配置的,要么是由您的 Web 服务器上运行的应用程序生成的。通常,您只会获得由默认虚拟主机提供的内容,而不会重定向到其规范名称。
如果您不想摆脱通配符 DNS,但确实希望为这些请求提供错误,则请将虚拟主机的加载顺序更改为默认顺序,如下所示:
<VirtualHost *:80>
ServerName catchall
<Location />
Order allow,deny
Deny from all
</Location>
</VirtualHost>