404是服务器明确返回“路径未找到”的http状态码,非文件丢失;仅在http请求(如http://localhost)中触发,file:///路径不会出现,需通过network面板确认真实请求url并比对服务器配置与资源路径。

404不是文件丢了,而是服务器明确告诉你“这个路径我找不到”——它可能真不存在,也可能存在但被配置挡住了。直接打开 file:/// 路径不会触发 404,只有走 HTTP 请求(http://localhost 或线上域名)才会出现,所以第一步先确认你是不是在用 Web 服务器访问。
检查浏览器地址栏是不是 http:// 开头
很多人双击 HTML 文件,地址栏显示的是 file:///Users/xxx/index.html,这种根本没经过服务器,压根不会返回 404 状态码。它出问题只会是空白页、图片不显示或控制台报 Not allowed to load local resource。要真正测试 404,必须启动本地服务,用 http://localhost:port/xxx.html 访问。
- Python 用户:终端进项目目录,运行
python -m http.server 8000,然后访问http://localhost:8000/index.html - Node.js 用户:装
serve后运行npx serve -s,默认开在http://localhost:5000 - Django 用户:确保已运行
python manage.py runserver,且 URL 是http://127.0.0.1:8000/xxx/,不是file:// - 别用 VS Code Live Server 插件后还手动拖 HTML 到浏览器——插件已启服务,就该用它给的链接
用浏览器 Network 面板看真实请求路径
按 F12 打开开发者工具 → 切到 Network 标签 → 刷新页面 → 找标红的 404 请求项,点开看它的 Headers 里的 Request URL。这个 URL 就是服务器实际收到的地址,也是你要对齐的目标。
- 如果 URL 是
http://localhost/css/style.css,但你的style.css其实放在assets/css/下,那就得改 HTML 中的<link href="assets/css/style.css"> - 如果 URL 是
http://localhost/static/images/logo.png,而你文件在images/logo.png(没 static 前缀),说明静态资源路径配置或引用写错了 - 注意大小写:
IMG.JPG和img.jpg在 Linux/macOS 服务器上是两个文件,Windows 下可能不报错但线上必 404 - URL 中含中文或
ö等字符时,浏览器会自动编码(如%C3%B6),但文件系统里若存的是未编码名,就会 404;建议静态资源全用 ASCII 命名
Django/Flask 等框架里图片 CSS 404 的特殊原因
这些框架不把整个项目目录当 Web 根目录,而是只暴露特定路径(如 /static/)下的文件。你把图片扔在 HTML 同级目录,它就是不可达的——不是路径写错了,是服务器压根不提供那个位置的文件。
- Django:必须把图片放进
static/子目录(如static/images/foo.jpg),HTML 中用{% static 'images/foo.jpg' %},且settings.py里有STATIC_URL = '/static/'和STATICFILES_DIRS正确指向 - Flask:默认只服务
static/目录,图片放static/img/,引用写<img src="%7B%7B%20url_for('static',%20filename='img/foo.jpg')%20%7D%7D"> - Vue/React 单页应用:public/ 下的文件走根路径,src/ 下的要用
require('./xxx.png')或import xxx from './xxx.png',不能直接写相对路径./xxx.png - 别在模板里硬写
./images/xxx.jpg—— 这个.是相对于当前请求 URL 的,不是相对于 HTML 文件位置
Apache/Nginx 配置导致的 404 不容易发现
文件明明在硬盘上,路径也对,但还是 404,大概率是服务器配置把请求拦下了。常见于 DocumentRoot 指错、DirectoryIndex 没配 index.html、或者 .htaccess 权限拒绝读取。
- Apache:检查
httpd.conf或虚拟主机配置里的DocumentRoot "/path/to/your/site"是否指向你放 HTML 的目录;再确认有没有DirectoryIndex index.html - Nginx:检查
server块里的root /path/to/site;,注意末尾不加斜杠;还要看有没有location / { try_files $uri $uri/ /index.html; }这类前端路由 fallback(SPA 必需,但普通网站可能多余) - 权限问题:Linux 上如果文件属主不是 www-data 或 nginx 用户,且权限不是 644(文件)或 755(目录),服务器读不到也会 404,不是 403
- 改完配置必须重启服务:
sudo systemctl restart apache2或sudo nginx -s reload,否则白改
最常被忽略的一点:404 的根源往往不在 HTML 里写的路径,而在服务器怎么解释这个路径。Network 面板里的 Request URL 是唯一真相,其他都是猜测。别急着改代码,先盯住那一行红色 URL。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











