You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Apache在访问不存在的域名时显示第一个虚拟主机内容?

如何阻止Apache在访问不存在的域名时显示第一个虚拟主机内容?

我之前维护cPanel服务器的时候刚好碰到过一模一样的问题!这种情况是因为WHM/cPanel更新后,Apache的默认虚拟主机逻辑变了,直接手动改普通配置文件很容易被面板的自动配置覆盖,给你几个亲测有效的解决办法:

方法一:通过WHM的Include Editor配置全局默认虚拟主机

这是最稳妥的方式,避免配置被cPanel的EasyApache 4更新覆盖:

  1. 登录WHM后台,找到「Apache Configuration」→「Include Editor」
  2. 选择「Pre Virtual Host Include」,再对应你的Apache版本(比如Apache 2.4)
  3. 粘贴以下配置内容:
# 处理HTTP请求的默认主机
<VirtualHost *:80>
    ServerName _default_
    RedirectPermanent / /cgi-sys/defaultwebpage.cgi
</VirtualHost>

# 处理HTTPS请求的默认主机(必须配置SSL证书,否则浏览器会报错)
<VirtualHost *:443>
    ServerName _default_
    SSLEngine on
    # 可以使用cPanel自带的默认SSL证书,路径通常是:
    SSLCertificateFile /var/cpanel/ssl/cpanel/cpanel.pem
    SSLCertificateKeyFile /var/cpanel/ssl/cpanel/cpanel.pem
    RedirectPermanent / /cgi-sys/defaultwebpage.cgi
</VirtualHost>
  1. 保存后重启Apache:systemctl restart httpd(或service httpd restart,根据系统版本)

方法二:直接用WHM的Tweak Settings一键配置

如果不想写配置代码,可以直接通过面板的调整设置实现:

  1. 登录WHM后台,找到「Server Configuration」→「Tweak Settings」
  2. 切换到「Apache」标签页
  3. 找到「Default Website」选项,选择「Redirect to the cPanel default webpage」
  4. 保存设置,面板会自动帮你配置好默认虚拟主机的重定向规则

为什么你之前的配置没生效?

  • 你之前的<VirtualHost *>没有明确指定端口,Apache 2.4中建议分别配置:80和:443,否则HTTPS请求不会被这个默认主机捕获
  • 直接修改000-default.conf或pre_virtualhost_2.conf可能会被cPanel的自动配置覆盖,用Include Editor添加的内容会被永久保留
  • 使用ServerName _default_是Apache官方推荐的默认主机标识,能确保捕获所有不匹配其他虚拟主机的请求

测试验证

配置完成后,可以用curl命令测试是否生效:

curl -I http://random-test-domain.tld

如果返回301 Moved Permanently,并且跳转地址是http://random-test-domain.tld/cgi-sys/defaultwebpage.cgi,就说明配置成功了。

备注:内容来源于stack exchange,提问作者Gavin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:32:40