DocumentRoot配置错误是404主因:需确保配置路径与真实文件路径完全一致,同步更新块、设置正确权限(chmod/chown)、检查SELinux上下文及DirectoryIndex索引文件。

检查 DocumentRoot 是否指向真实文件路径
服务器返回 404,但文件明明存在,第一反应不是代码写错,而是 DocumentRoot 配置没对上。Apache 的 httpd.conf 或 Nginx 的 nginx.conf 中的根目录设置,必须和你实际放 HTML 文件的物理路径完全一致。
常见错误包括:
- 把文件扔进了
/var/www/html/,但配置里写的是/srv/www/ - 用 Docker 部署时挂载路径写反,容器内路径和宿主机不匹配
- 开发环境用 Vite 启动了
npm run preview,误以为它等同于生产服务器——它只是静态服务,不读取任何服务器配置
确认 DirectoryIndex 是否包含 .html
访问 http://localhost/ 报 404,但 http://localhost/index.html 能打开,大概率是 DirectoryIndex 没配好。
Apache 默认值通常是 index.html index.htm,但有些精简版或自定义镜像会删掉 .html;Nginx 则依赖 index 指令,比如 index index.html;。漏掉这个,请求目录时就不会自动找 index.html,直接 404。
验证方式:临时在配置里加一句 index test.html;,再放个 test.html 到根目录,看 / 能否加载它。
排查是否启用了 URL 重写但未 fallback
前端用 Vue Router / React Router 的 history 模式,又没配服务端 fallback,刷新页面就 404——这不是前端 bug,是服务器配置缺失。
Nginx 必须有类似这样的块:
location / {
try_files $uri $uri/ /index.html;
}
Apache 需要 .htaccess 里的重写规则,且 mod_rewrite 已启用;IIS 则靠 web.config 的 + URL 重写模块。缺一不可。
注意:try_files 最后一项不能写成 /index.html?_=$args 这类带 query 的形式,Nginx 不认,照样 404。
验证文件权限与 SELinux(Linux 专用)
文件路径、配置都对,还是 404?别跳过系统层权限。Apache/Nginx 进程用户(如 www-data 或 nginx)必须对 HTML 文件及其父目录有 rx 权限。常见陷阱:
- 目录只有
750,但组不包含 web 服务用户 - SELinux 启用状态下,文件 context 不是
httpd_sys_content_t,导致被拦截(ls -Z可查) - Docker 容器内用 root 写的文件,在非 root 用户运行的 Nginx 里读不了
临时测试可执行 chmod -R 755 /path/to/html 和 chcon -R -t httpd_sys_content_t /path/to/html(仅限 SELinux 环境),看是否恢复——若恢复,说明权限或上下文才是真因。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











