CentOS 7 部署 Laravel 5 绑定域名后无法正常访问求助
解决Laravel虚拟主机访问仍显示Apache默认页的问题
我来帮你一步步排查这个问题,这种情况通常是虚拟主机配置未生效、优先级冲突或者权限设置导致的,按以下步骤逐一验证:
1. 确认虚拟主机配置文件被正确加载
CentOS 7 上的 Apache 只会加载 /etc/httpd/conf.d/ 目录下以 .conf 结尾的配置文件。如果你把虚拟主机配置放在了其他位置,或者文件名没有 .conf 后缀,Apache 是不会识别的。
- 先检查你的配置文件位置和命名,比如应该是
/etc/httpd/conf.d/mydomain.conf - 执行命令检查配置语法是否正确:
如果返回httpd -tSyntax OK,再重启 Apache 服务让配置生效:systemctl reload httpd
2. 检查默认站点的优先级冲突
Apache 会优先匹配第一个符合条件的虚拟主机,如果默认的 Apache 配置(比如 /etc/httpd/conf/httpd.conf 里的默认站点)优先级高于你的自定义虚拟主机,就会显示默认页面。
- 打开
/etc/httpd/conf/httpd.conf,找到默认的DocumentRoot配置段,比如:
可以暂时注释掉这个默认配置段,然后重启 Apache 再测试。DocumentRoot "/var/www/html" <Directory "/var/www/html"> ... </Directory>
3. 验证文件权限与 SELinux 设置
Laravel 对 storage 和 bootstrap/cache 目录需要写权限,而且 CentOS 7 默认开启的 SELinux 可能会阻止 Apache 访问这些目录:
- 先设置正确的文件所有者:
chown -R apache:apache /var/www/html/laravel - 给必要目录添加写权限:
chmod -R 755 /var/www/html/laravel/storage /var/www/html/laravel/bootstrap/cache - 配置 SELinux 上下文(避免临时关闭 SELinux带来的安全问题):
如果想临时测试是否是 SELinux 的问题,可以执行chcon -R -t httpd_sys_rw_content_t /var/www/html/laravel/storage /var/www/html/laravel/bootstrap/cachesetenforce 0,再访问网站试试,如果生效了,记得修改/etc/selinux/config把SELINUX=enforcing改成SELINUX=permissive(永久生效需要重启服务器)。
4. 检查 DNS 或本地 hosts 解析
如果是测试环境,确保你的本地机器的 hosts 文件(Windows 是 C:\Windows\System32\drivers\etc\hosts,Linux/macOS 是 /etc/hosts)已经添加了对应解析:
服务器IP www.mydomain.com mydomain.com
如果是公网环境,检查 DNS 解析是否已经生效(可以用 nslookup www.mydomain.com 验证)。
5. 查看 Apache 日志定位问题
如果以上步骤都没解决,查看 Apache 的访问日志和错误日志,能帮你找到具体问题:
- 访问日志:
/var/log/httpd/access_log - 错误日志:
/var/log/httpd/error_log
看看访问www.mydomain.com时有没有报错信息,比如 403 权限错误、配置加载失败等,根据日志再针对性解决。
内容的提问来源于stack exchange,提问作者YSFKBDY
相关产品推荐
相关产品推荐

