防止在 Apache 服务器别名设置中使用通配符

防止在 Apache 服务器别名设置中使用通配符

这是从我的服务器修改的 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 设置一个容器,它基本上指向一个静态页面,通知人们管好自己的事。

相关内容