Apache2 在不匹配的子域名上发送 404

Apache2 在不匹配的子域名上发送 404

如果找不到子域名,我该如何发送 404?例如,如果我有这样的内容:

<VirtualHost *:80>
  ServerName www.example.com
  DocumentRoot /var/www
  <all other stuff>
</VirtualHost>

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www
  <all other stuff>
</VirtualHost>

并打开 example.com,它会打开正确的页面,如果我尝试使用子域名 www.example.com,它会正确打开。但是,如果我尝试 test.example.com(或任何其他子域名),它仍然会打开相同的页面,但我想发送 404。看起来与这个问题非常相似: apache2-虚拟主机和通配符子域名,但我找不到创建 404 响应的方法。

答案1

我找到了一种使用 RewriteRule 来实现这一点的方法,如下所示:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^ - [R=404,L]

不知道这是否是最好的方法,但对我来说很有效。

相关内容