不是文档地址标签,而是控制相对url解析基准的标签,仅影响后续相对路径拼接,不声明当前页面地址,必须置于且最多一次。

HTML 里没有专门定义“文档地址信息”的标签,<base> 是唯一能影响相对 URL 解析位置的标签,但它不存储或声明文档自身地址,只是改变后续相对链接的解析基准。
为什么 <base> 常被误认为是“地址信息标签”
很多人在查“HTML 怎么写文档地址”时,实际想解决的是:点击链接跳转错位、图片路径 404、AJAX 请求发到错误域名——这些问题常源于相对路径解析出错,而 <base> 正是控制这个解析行为的开关。
它不声明当前页面在哪,只告诉浏览器:“从现在起,所有相对 URL 都按我给的地址来算起点”。
- 只能放在
里,且最多出现一次 - 一旦设了
href,所有<a href="about.html"></a>、<img src="logo.png" alt="HTML怎样定义文档的地址信息_HTML定义文档地址信息标签【标签】" >、fetch("api/data")都会以它为基准拼接完整 URL - 如果页面本身是通过不同路径访问(比如 Nginx 重写 /app/ → /),但没同步更新
<base href="/app/">,就会全站路径错乱
<base> 的典型用法和危险操作
适用场景很窄:单页应用(SPA)部署在子路径、静态站点生成器输出到非根目录、CDN 回源路径需要统一前缀。
立即学习“前端免费学习笔记(深入)”;
错误用法比比皆是:
- 在开发环境加了
<base href="http://localhost:3000/">,上线后忘了删,导致生产环境所有相对链接强制走本地地址 - 用了
<base href="/sub/">,但某个<script src="./utils.js"></script>里的./被解析成/sub/./utils.js,看似对,实则某些老浏览器会多一层解析异常 - 混用
target="_blank"和<base target="_blank">,结果所有新窗口链接都被强制新开,包括用户手动复制的链接
示例:正确写法(仅当真需要时)
<head> <base href="/my-app/"> </head>
真正标识文档地址的,其实是 HTTP 头和 JS
HTML 标签层面无法“定义”当前文档地址——那是服务器响应头 Location 或浏览器地址栏决定的。页面内可用的只有读取手段:
-
document.URL:返回完整 URL 字符串(含查询参数、hash) -
document.location.origin+pathname:拆解协议+域名+路径 - 服务端渲染时,把真实地址注入
<meta name="canonical" content="...">,用于 SEO,但这不影响任何运行时行为
<link rel="canonical"> 只是提示搜索引擎“这篇内容的权威地址是这个”,浏览器完全无视它做跳转或请求。
真正容易被忽略的点:改了 <base> 后,连 window.location.href 返回值不变,但所有相对 URL 的解析逻辑已静默切换——调试时看控制台 Network 面板里的请求地址,才能确认它是否生效,而不是靠肉眼看 HTML 源码。











