![Apache2 在不匹配的子域名上发送 404](https://linux22.com/image/616274/Apache2%20%E5%9C%A8%E4%B8%8D%E5%8C%B9%E9%85%8D%E7%9A%84%E5%AD%90%E5%9F%9F%E5%90%8D%E4%B8%8A%E5%8F%91%E9%80%81%20404.png)
如果找不到子域名,我该如何发送 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]
不知道这是否是最好的方法,但对我来说很有效。