Laradock中Apache2访问项目文件出现404 Not Found问题求助
问题背景
本地目录结构:
--docker --laradock --demo --project_a --public --project_b --public --project_c --public
对应访问域名:projecta.test、projectb.test、projectc.test,Apache相关配置文件如提供内容所示。
以下是可能导致404错误的原因及排查方法:
目录挂载未正确配置
Laradock容器内的/var/www/demo必须映射到宿主机的docker/demo目录,否则容器根本找不到项目文件。
检查laradock/docker-compose.yml中apache服务的volumes配置,需包含类似条目:volumes: - ../demo:/var/www/demo若挂载路径错误或缺失,容器内无法访问
/var/www/demo/project_a/public,直接返回404。虚拟主机配置未加载
确认projecta.conf等站点配置文件已被正确加载到Apache容器中:- 检查Laradock的Apache设置,确认
laradock/apache2/sites/下的.conf文件是否被挂载或复制到容器的/etc/apache2/sites/目录; - 虽然
vhost.conf配置了Include /etc/apache2/sites/*.conf,但如果容器内没有对应的.conf文件,Apache无法识别projecta.test的虚拟主机,会走默认站点导致404。
- 检查Laradock的Apache设置,确认
文件/目录权限不足
Apache进程以www-data用户运行,若容器内项目目录或文件权限不允许该用户访问,会返回404:- 进入Apache容器:
docker exec -it laradock-apache-1 bash; - 查看目录权限:
ls -l /var/www/demo/project_a/; - 若权限不足,执行
chown -R www-data:www-data /var/www/demo调整所有者,或设置目录权限为755、文件权限为644。
- 进入Apache容器:
本地DNS解析错误
若本地hosts文件未正确配置域名映射,访问请求可能未指向Laradock的Apache服务:
在hosts文件中添加以下内容:127.0.0.1 projecta.test 127.0.0.1 projectb.test 127.0.0.1 projectc.test- Windows路径:
C:\Windows\System32\drivers\etc\hosts - macOS/Linux路径:
/etc/hosts
- Windows路径:
Apache配置语法错误
虚拟主机配置文件存在语法错误时,Apache无法加载该配置,会使用默认站点:
进入Apache容器执行命令检查配置:apache2ctl configtest根据提示修正语法错误后重启Apache服务。
默认站点冲突
若容器内存在启用的默认站点(如000-default.conf),可能优先匹配该站点,导致自定义虚拟主机配置不生效:
检查容器内/etc/apache2/sites-enabled/目录,确认默认站点已被禁用,或projecta.conf已被正确启用(可通过a2ensite projecta.conf命令启用)。
内容的提问来源于stack exchange,提问作者Hsuan Hsu

