Apache2服务器无法正确显示网站:裸域名访问返回默认页
Apache2 裸域名访问返回默认页问题排查方案
核心成因
www子域访问正常、裸域名返回Apache默认页,本质是虚拟主机路由匹配规则未覆盖裸域名请求:
- Apache虚拟主机按配置加载顺序匹配请求携带的Host头,最先加载的已启用虚拟主机,会成为所有未明确匹配Host请求的兜底响应站点
- 通常这类问题都是站点配置仅声明了www域名的ServerName,未将裸域名纳入匹配范围,导致访问mydomain.com的请求直接命中排在加载顺序第一位的Apache默认示例站点。
分步修正操作
检查站点核心配置
打开/etc/apache2/sites-available/mydomain.com.conf,核对两个关键配置项:- ServerName 条目是否仅填写了
www.mydomain.com - 是否存在ServerAlias条目覆盖裸域名匹配
正确的站点核心配置参考:
<VirtualHost *:80> ServerName www.mydomain.com ServerAlias mydomain.com DocumentRoot /var/www/mydomain.com <Directory /var/www/mydomain.com> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/mydomain_error.log CustomLog ${APACHE_LOG_DIR}/mydomain_access.log combined </VirtualHost>其中
ServerAlias mydomain.com的作用是明确告知Apache,这个虚拟主机需要响应裸域名的请求,缺失这行配置时,Apache仅会将携带www前缀的请求路由到目标站点目录。- ServerName 条目是否仅填写了
调整配置加载优先级
执行ls -l /etc/apache2/sites-enabled/查看当前生效配置的加载顺序:Apache会按文件名的字典序加载sites-enabled路径下的所有配置,默认示例站点000-default.conf因文件名开头数字最小,会最先被加载,成为所有未匹配请求的兜底站点。
可二选一完成调整:- 执行
a2dissite 000-default直接禁用Apache默认示例站点 - 将自己的站点配置文件重命名为字典序更靠前的名称(如
00-mydomain.com.conf),让站点配置先于默认站点被加载
- 执行
校验配置并重载服务
所有配置修改完成后,执行apache2ctl configtest检查配置语法,终端输出Syntax OK后,执行systemctl reload apache2使配置生效。
可通过本地curl命令验证路由是否正确:执行curl -H "Host: mydomain.com" http://127.0.0.1,返回目标站点首页内容而非Apache默认页,即代表配置生效。
易踩疏漏点
- 仅在DNS层面给裸域名配置了指向VPS的解析记录,但未在Apache虚拟主机中做对应匹配,导致请求已到达VPS但Web服务未正确路由
- 修改配置文件后未重载Apache服务,配置未实际加载生效
- 仅将配置文件存放在
sites-available路径下,未执行a2ensite mydomain.com.conf生成软链接到sites-enabled路径,配置根本未被Apache读取
内容的提问来源于stack exchange,提问作者Hard Code Programmer
相关产品推荐
相关产品推荐

