我有一个站点 server.com,当直接使用 server.com 或 www.server.com 访问时,我希望返回该站点,但如果使用其 IP 或其他主机名访问 Web 服务器,则会发出 404。
我得到了如下信息:
NameVirtualhost 10.0.0.1:80
<VirtualHost 10.0.0.1:80> #This should be used if Host is server.com or www.server.com
ServerName server.com
ServerAlias server.com www.server.com
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost 10.0.0.1:80> #This should be used alternatively
RewriteEngine On
RewriteRule (.*) - [R=404]
</VirtualHost>
如果主机名不是 server.com 或 www.server.com,我现在该如何设置应使用第二个条目?
答案1
要回答您的问题,您可以先加载备用虚拟主机(文件中的第二个),它应该可以工作。(反转 conf 文件中的顺序)。如果未找到特定主机名(server.com 或 www.server.com),则 Apache 将使用匹配的第一个加载的虚拟主机。
但是,如果您只使用所需的虚拟主机(文件中的第一个虚拟主机 - server.com / www.server.com),而不使用其他任何虚拟主机,Apache 是否不会按照您的要求执行操作?如果主机名与 ServerName 和 ServerAlias 中的主机名不同,它将发出 404(IP 或其他主机名将被重定向到 404)。
(注意:您不需要在 ServerAlias 中重复 server.com,因为它已经在 ServerName 中了)