Live Server 默认根目录是 VS Code 中通过 File → Open Folder 打开的工作区根目录;所有资源路径均以此为基准,如需更改可配置 liveServer.settings.root 指定子目录。

Live Server 默认根目录在哪?
Live Server 启动时,http://localhost:5500/ 的根路径就是你用 File → Open Folder 打开的那个文件夹,不是某个 HTML 文件所在子目录。这意味着所有相对路径都必须从这个根目录算起。
常见错误现象:index.html 在根目录能正常加载 css/style.css,但当你把 index.html 移到 pages/ 下,再用 Live Server 打开它,浏览器地址变成 http://localhost:5500/pages/index.html,此时页面里写 href="css/style.css" 就会 404——因为实际请求的是 http://localhost:5500/css/style.css,而 CSS 文件其实在 http://localhost:5500/pages/css/style.css。
- 不要依赖“右键单击 HTML 文件 → Open with Live Server”来决定根路径;它只影响启动页,不改变服务根目录
- 如果项目结构天然多层(如
src/pages/about.html、src/assets/css/main.css),就老老实实统一用从根目录出发的相对路径,比如href="../assets/css/main.css" - 想让
pages/about.html正确引用assets/css/main.css,路径必须是../../assets/css/main.css(两层返回根,再进 assets)
怎么让 Live Server 把子文件夹当根?
不能直接改,但可以绕过:在项目根目录下创建 .vscode/settings.json,显式指定 liveServer.settings.root。
例如你的 HTML 全在 src/ 下,CSS/JS 在 src/assets/,你想让 http://localhost:5500/ 指向 src/ 而不是项目根,就配:
立即学习“前端免费学习笔记(深入)”;
{
"liveServer.settings.root": "/src"
}
注意:/src 是相对于当前工作区根目录的路径,开头的 / 表示“从工作区根开始”,不是系统绝对路径。
- 该配置只影响 Live Server,不影响其他插件或终端命令
- 如果填错路径(比如写成
"src"缺少开头斜杠),Live Server 会静默失败,页面空白或资源 404 - 多级嵌套时,优先调整
root,比在每个 HTML 里写一长串../../../更可靠
HTML 内部跳转和资源引用,路径到底怎么写?
所有 <a href="...">、<link href="...">、<script src="..."> 的路径,都按「当前 HTML 文件在服务器 URL 中的位置」来算相对路径。
假设结构是:
/my-project├── index.html
├── pages/
│ ├── about.html
│ └── contact.html
└── assets/
├── css/
│ └── style.css
└── js/
└── main.js
那么 pages/about.html 里的引用必须这样写:
-
<link rel="stylesheet" href="../assets/css/style.css">(上一级到根,再进 assets) -
<a href="../index.html">首页</a>(返回根目录找 index.html) -
<a href="contact.html">联系页</a>(同级跳转,不用加./)
绝对路径(以 / 开头)也行,但前提是 Live Server 的 root 配置跟你预期一致。比如设了 "liveServer.settings.root": "/pages",那 href="/about.html" 就会请求 http://localhost:5500/about.html——而这个路径并不存在,404。
为什么用相对路径而不是 base 标签?
有人试过在 <head> 里加 <base href="/pages/"> 来统一基准,但容易翻车:
-
<base>会影响页面内所有相对 URL,包括<a href>、<img src>、<form action>,稍不注意就导致跳转错乱 - Live Server 对
<base>的支持不稳定,某些版本下 CSS/JS 加载失败但控制台无报错 - 一旦你换用其他本地服务器(比如
python -m http.server或 Vite),<base>可能需要同步修改,增加维护成本
真正省事的方式,是接受 Live Server 的默认行为,把路径逻辑理清,再配合 liveServer.settings.root 做一次收敛。嵌套越深,越要克制“用 base 简化”的冲动——它解决的是表象,埋下的是隐性耦合。


















