这是从我的服务器修改的 VirtualHost 设置。
<VirtualHost *:80>
ServerName example.com
DocumentRoot /mnt/example/public
<Directory /mnt/example/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
我发现我可以访问 example.com 和 *.example.com,例如 www.example.com、abcde.example.com 等。
我知道应该有一个 ServerAlias 设置,可以让我激活通配符子域支持。但我在 VirtualHost 或 Apache 配置文件中看不到 ServerAlias 设置。
我想只允许 www.example.com 和 example.com 访问我的网站,其他子域名将出现 404 错误。
我该如何设置?
谢谢大家。:)
答案1
我认为您在 conf 文件中的所有 vhost 容器之前缺少的是:
NameVirtualHost *:80
完成这些操作后,根据您想要对所有您认为“无效”的通配符执行的操作,您可以创建所需的<virtualhost>
容器,然后用最后一个通配符作为其余通配符的集合。
看http://httpd.apache.org/docs/2.2/vhosts/name-based.html
例如,我所做的是为 myhost.mydomain.tld 设置一个 vhost 容器,然后是其他域,最后,我为 *.mydomain.tld 设置一个容器,它基本上指向一个静态页面,通知人们管好自己的事。