Apache显示默认测试页而非指定index.php问题求助
咱们一步步排查解决你的 ahk.daviddaily.dev 显示默认页的问题,既然 archive.callmeloopdaddy.com 能正常运行,咱们就拿它当参考基准。
1. 检查是否配置了对应的HTTPS虚拟主机
你的80端口配置会把所有请求重定向到HTTPS,但如果没有为 ahk.daviddaily.dev 配置 <VirtualHost *:443> 块,Apache就会 fallback 到默认的SSL配置(也就是显示测试页)。
复制你那台能正常运行的 archive.callmeloopdaddy.com 的SSL配置,然后修改以下内容:
ServerName和ServerAlias改成ahk.daviddaily.dev和www.ahk.daviddaily.devDocumentRoot改为/var/www/ddaily/ahk- 如果这个域名用了不同的SSL证书,更新
SSLCertificateFile和SSLCertificateKeyFile的路径(如果证书通用就直接复用) - 别忘了在这个SSL块里也设置
DirectoryIndex /_h5ai/public/index.php
2. 确认新的虚拟主机配置被Apache加载
CentOS 7下,Apache会加载 /etc/httpd/conf.d/ 目录下所有以 .conf 结尾的配置文件。确保你的 ahk.daviddaily.dev.conf 放在这个目录里,而且配置没有语法错误:
apachectl configtest
如果输出 Syntax OK,就重启Apache生效:
systemctl restart httpd
3. 给新虚拟主机添加<Directory>块
你那台正常的archive虚拟主机大概率有对应的 <Directory> 块来设置权限和覆盖规则,可能你给新子域名配置的时候漏掉了。在80端口和443端口的虚拟主机块里都加上这段:
<Directory "/var/www/ddaily/ahk"> Options Indexes FollowSymLinks AllowOverride All Require all granted DirectoryIndex _h5ai/public/index.php </Directory>
这能确保Apache识别正确的索引文件,并且有权限访问目录内容。
4. 修复目录权限和SELinux上下文
首先,对齐正常运行的archive目录的权限:
# 对比两个目录的权限 ls -ld /var/www/archive /var/www/ddaily/ahk ls -l /var/www/archive/_h5ai /var/www/ddaily/ahk/_h5ai # 将目录所有者设为Apache运行用户(CentOS下通常是apache) chown -R apache:apache /var/www/ddaily/ahk
CentOS默认开启SELinux,可能会阻止Apache访问新目录。恢复正确的SELinux上下文:
restorecon -Rv /var/www/ddaily/ahk
5. 查看Apache错误日志找具体线索
如果上面的步骤都没解决问题,就去看错误日志,里面会有具体的报错信息:
tail -f /var/log/httpd/error_log
然后在浏览器访问 ahk.daviddaily.dev,看看日志里有没有类似「权限拒绝」「文件未找到」或者配置解析错误的提示,这些能直接帮你定位根因。
最后一步:再次测试
做完任何修改后,重启Apache,清空浏览器缓存,再测试子域名访问。
内容的提问来源于stack exchange,提问作者Daily the Noob

