要求 VirtualHost 中含有 ServerName

要求 VirtualHost 中含有 ServerName

我有以下 CNAME 记录:pear.example.com

然后我有一个 VirtualHost 条目:

<VirtualHost *:80>
    ServerName pear.example.com
    DocumentRoot /var/www/pearsite

    <Directory /var/www/pearsite>
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory>
</VirtualHost>

我不想/var/www/pearsite向输入 example.com 的人显示。example.com 应该显示禁止。

有没有什么办法可以用 Apache 实现这个目标?

答案1

当然 - 您会希望将不同的虚拟主机作为默认主机,并让其提供 403 服务。

# This might already be present in your config, add it if not:
NameVirtualHost *:80

<VirtualHost *:80>
  ServerName catchall
  <Location />
    Order allow,deny
    Deny from all
  </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName pear.example.com
    # your existing config..
</VirtualHost>

在实际定义之前定义 403 错误将导致它被用作与其他虚拟主机的主机名不匹配的请求的默认值。

相关内容