在 VirtualHost 中需要 ServerName

flu*_*mpb 2 apache-2.2 apache-2.4

我有以下 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>
Run Code Online (Sandbox Code Playgroud)

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

有什么办法可以用 Apache 实现这一点吗?

Sha*_*den 5

绝对 - 您需要一个不同的虚拟主机作为默认主机,并让它为 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>
Run Code Online (Sandbox Code Playgroud)

在真正的之前定义 403ing 将导致它被用作与不同虚拟主机的主机名不匹配的请求的默认值。