如果找不到子域名,我该如何发送 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]
不知道这是否是最好的方法,但对我来说很有效。